La prévention d'une 504 Gateway Timeout avec d'énormes script PHP
Je suis actuellement en cours d'exécution d'un serveur Apache (2.2) sur ma machine locale (Windows) dont je suis l'aide d'exécuter des scripts PHP pour prendre soin de certaines tâches fastidieuses. L'un des scripts implique une tonne de déplacement, redimensionnement, et de les télécharger /télécharger des fichiers vers un autre serveur. J'aimerais beaucoup le script à exécuter en permanence, de sorte que je n'ai pas de bébé le script et qu'il commence de nouveau à chaque fois qu'il expire.
set_time_limit(0);
ignore_user_abort(1);
Les deux sont ensemble dans mon script, mais après environ 30 minutes à une heure, le script s'arrête et j'ai l'504 Gateway Time-out message dans mon navigateur. Est-il quelque chose que je manque dans Apache ou PHP pour éviter le délai d'attente? Ou dois-je exécuter le script d'une manière différente?
OriginalL'auteur tsp3 | 2010-10-15
Vous devez vous connecter pour publier un commentaire.
Certainement. Vous devez exécuter votre script en ligne de commande (CLI)
OriginalL'auteur dev-null-dweller
si je dois mettre en place quelque chose comme cela, je ne vous 2 différents scripts:
Le flux de travail qui doit être:
Ajax d'interrogation:
il ya quelques considérations à propos de la communication entre les 2 processus, en fonction du nombre d'instances du script B vous seriez en mesure d'exécuter en parallèle
session_start(); $token = session_id();
OriginalL'auteur Cesar
Si vous avez besoin d'exécuter la forme de votre navigateur, vous devez Vous assurer qu'il n'y a pas de php limite d'exécution dans le php.fichier ini, mais aussi qu'il n'y a pas de limite fixée dans mod_php (ou ce que jamais vous utilisez) sous apache.
OriginalL'auteur Colum
Utilisation de php
system()
à l'appel d'un script shell qui lance un service/tâche en arrière-plan.OriginalL'auteur rthrwht