Comment puis-je obtenir de l'infini au maximum les temps d'exécution avec PHP?
J'ai un site avec 2000 pages et je veux pour itérer sur chaque page pour générer une sitemap, à l'aide de la file_get_html()
de la fonction et des expressions régulières.
Évidemment, ce ne peut être complété en une seule exécution côté serveur comme il sera à court de temps en raison de maximum de temps d'exécution. Je suppose qu'il doit effectuer de petites actions, d'enregistrer les progrès de la base de données et puis la file d'attente de la tâche suivante. Des suggestions?
Une rapide side réponse: cela dépend de votre fournisseur d'hébergement
Je suppose que le fournisseur d'hébergement ne permet pas de modifier le temps d'exécution (c'est à dire
Juhana: même s'ils permettent de changer de PHP délai à 0, il y a toujours une question de du serveur web de résiliation de connexions, et il y a également une possibilité d'hébergement a un système en place qui tue long de l'exécution de PHP threads.
Je suppose que le fournisseur d'hébergement ne permet pas de modifier le temps d'exécution (c'est à dire
set_time_limit()
ne fonctionne pas)? Bien que cela sonne comme vous pouvez exécuter le script une fois, périodiquement sur votre propre ordinateur et de télécharger la page de résultat.Juhana: même s'ils permettent de changer de PHP délai à 0, il y a toujours une question de du serveur web de résiliation de connexions, et il y a également une possibilité d'hébergement a un système en place qui tue long de l'exécution de PHP threads.
OriginalL'auteur Paul Mason | 2011-08-12
Vous devez vous connecter pour publier un commentaire.
Lorsque vous l'exécutez la ligne de commande il n'y aura pas de délai maximal d'exécution.
Vous pouvez également utiliser
set_time_limit(0);
pour cette si votre fournisseur permet la manipulation.Je ne peux pas dire si votre adresse ip banni - car cela dépend de la sécurité du serveur de vous envoyer vos demandes pour.
Autre solution
Vous pouvez chercher un (ou quelques) page(s), et la recherche de nouvelles URLs dans tout le code source. Vous pouvez ensuite la file d'attente de ceux-ci dans une base de données. Puis sur la prochaine course, vous devez traiter la file d'attente.
Merci Wesley. Idéalement, j'aimerais obtenir les résultats à mesure qu'ils progressent. Un autre exemple est celui d'un robot de moteur de recherche ne serait pas analyser l'ensemble de l'internet en une seule exécution. Il doit y avoir une façon de briser une action complexe dans les plus petits et la file d'attente de l'exécution. Des idées?
Je suis d'accord, je serais définitivement conseiller à cet égard.
Vérifier mon montage 🙂
Votre autre solution sonne bien. Bien que je ne suis pas sûr de savoir comment déclencher les files d'attente en php. Je suppose que l'utilisation d'un cron n'est pas la façon la plus élégante. Shoa a suggéré Gearman ou zeromq. Je vais vérifier et de vous laisser savoir.
OriginalL'auteur Wesley van Opdorp
Vous devriez envisager d'utiliser une file d'attente de Travail et des travailleurs de la mise en œuvre. Je recommande Gearman ou zeromq. Ces deux ont des natives de php liaisons.
OriginalL'auteur Shoan
Utilisation
set_time_limit(0)
. Voir la Manuel PHP pour des explications plus détaillées.EDIT: pour ce qui est de votre deuxième question, il n'est pas probable, cependant, vous devriez vérifier vos services d'hébergement Conditions d'Utilisation pour voir si c'est permis.
OriginalL'auteur Madara Uchiha
pour vous le meilleur moyen est d'utiliser remot api .
par exemple, vous pouvez utiliser de l'importation.io et obtenir les param de chaque page avec le format json .
c'est un moyen d'obtenir la lumière sur la page de chaque appel à file_get_content ou flie_get_html
mais pour cela, issu curl est beter que file_get_html
OriginalL'auteur AliHossinzadeh
Ensemble max_execution_time à 0 dans votre php.ini. Il aura une incidence sur chaque script à exécuter sur le serveur, mais si vous êtes à la recherche d'un serveur au niveau de correctif, cela va faire il.
http://php.net/manual/en/info.configuration.php#ini.max-execution-time
OriginalL'auteur Kirrus