-
Limite de javascript
Bonjour,
Voila, j'ai créé un script capable de générer toute les chaînes de caractere possibles après que l'utilisateur est défini la longueur des chaînes à générer, ainsi que des caracteres possibles.(je sais c'est pas clair lol)
Exemple: je demande à mon scipt de générer toute les chaînes de 4 caractères avec trois lettres possibles : a,b et c. Celui-ci va me retourner (soit ici 81 chaînes de caractere possible):mrgreen: :
-aaaa
-aaab
-aaac
.....
La, n'est pas le problème. C 'est juste qu'à partir d'une certaine longueur de chaine, I.E me met :
"Un script présent sur cette page ralentit I.E. S'il continue, votre ordinteur risque de cesser de réagir"...
Voila, apparemment quand la travail a effectué est trop important, bah I.E bloque javascript...
J'aurais voulu savoir si mon meme script traduit en php et ainsi executé sur le serveur rencontrerai le meme probleme ou meme une autre solution... MERCI
-
Il y'a peut être quelque chose de lourd dans ton script, autrement ça fonctionnera très bien sur un serveur, du moins, mieux que dans un navigateur
-
A priori ca devrait passer plus facilement, même s'il existe quand meme un temps d'exécution maximal aussi coté serveur, spécifié dans ton php.ini
Code:
max_execution_time = 30 //Maximum execution time of each script, in seconds
-
d'accord et peut on changer la valeur de cette variable dans php.ini ? :?
-
changer la valeur dans php.ini n'y fera rien puisque javascript est interprété coté client ...
-
non mais je parlais dans la mesure ou mon script est en php ;)
-
Ouais bien sur c'est possible. Dans le php.ini et meme via un htaccess.
-
Quel que soit le langage utilisé, côté client ou serveur, le problème de base restera quoi qu'il en soit le même, à savoir la complexité algorithmique du code à exécuter.
Si tu veux calculer toutes les chaines de N caractères composées uniquement des X caractères de ton alphabet, tu auras quoi qu'il en soit X^N chaines à calculer, donc, plus la taille de ta chaine grandit, plus le temps de calcul augmente (exponentiellement) et aussi plus l'occupation mémoire du programme augmente, à prendre en compte pour une exécution sur le serveur, en plus du temps d'exécution. Si tu cherches à calculer toutes les chaines de 8 caractères composées à partir d'un alphabet de 8 caractères, tu occuperas donc 128Mio soit 16 fois la mémoire autorisée par défaut par PHP (aussi modifiable dans le PHP.ini, mais si tu veux ajouter un caractère à la longueur des chaines, tu multiplies encore l'espace mémoire par le nombre de caractères de l'alphabet)
La limitation de ce point de vue là est plus faible sur le client mais l'exécution est beaucoup plus lente, ... à voir en fonction de tes besoins ...
-
ah d'accord merci pour cette petite explication au niveau de la mémoire, enfaite c'est juste pour pouvoir lister les répertoires d'un site, en générant toute les URL et en vérifiant si cette URL est valide, donc le fichier présent sur le serveur, effectué par la deuxième partie de mon script. Merci @+
-
Alors petit calcul rapide :
Supposons que tu n'utilises comme alphabet que 64 caractères : [a-zA-Z0-9\-\.]
Supposons que le nom de tes répertoires en question soient composés de 1 à 12 caractères chacun
Le nombre de possibilités à calculer est supérieur à
64^12 ce qui donne déjà 4 722 366 482 869 645 213 696 possibilités (4*10^21).
En imaginant un calcul optimisé avec une requête par cycle d'horloge du processeur avec un CPU à 8 GHz, 5*10^11 secondes, soit plus de 18 705 ans.
Si tu comptes faire des tests par réseau interposé, en HTTP par exemple, la fréquence pour les tests passe à quelques KHz, c'est à dire que le temps est multiplié en gros par un million, et encore, je pense être assez gentil ...
Tu peux donc lancer ton script et revenir dans 19 milliards d'années voir le résultat... et encore, je ne parle que du premier niveau de l'arborescence ...
Prévois un peu de café en attendant ;)
-
Si c'est pour ton propre site, t'as plutôt intéret à faire un listage des répertoires à l'aide des fonctions qui vont bien en PHP, car sur le serveur, tu as accès au système de fichier ...
http://php.developpez.com/faq/ - http://php.developpez.com/cours/#langage
-
Sauf que je comptais lutilsais en local grace a easyphp avec mon ordi, ca serait possible ca non ?
-
A priori ouais, mais si c'est juste pour lister des fichiers t'as plus vite fait d'utiliser des fonctions dédiées à ca comme le disait yjuliet.
J'ai du mal a comprendre pourquoi faire autrement en fait ^^
-
Cela me permettrais de lister les répertoires d'un site meme ceux qui possède un "index.html" ainsi que ceux interdit dans "robots.txt". bon maintenant il faut encore que je termine de retranscrire la première partie en php pi c'est bon, et puis de tester tout ca au point de vue performance, puis au pire, je le fais fonctionner dans un ciècle les ordinateurs seront assez performant pour me faire tout ca en 10 min :p. Alle merci a tous et puis bon dévelopement :king: . (Je sais que c'est pas correct mais bon apparemment montruc prendrais des milliards d'anné donc il ya pas de prob ;) ).