2013-03-19 1 views
2

Dans mon Plesk 11, PHP 5.4.7. Le système Apache/2.4.3, lorsque je fais des tâches cron, je reçois cette erreur du fichier error.log.Temps maximum d'exécution de PHP

[Tue Mar 19 21:33:18 2013] [warn] [client 88.44.55.66] mod_fcgid: read data timeout in 45 seconds 
[Tue Mar 19 21:33:18 2013] [error] [client 88.44.55.66] Premature end of script headers: index.php 

Alors j'ai vérifié pour le temps d'exécution avec ceci:

echo ini_get('max_execution_time'); 

J'ai eu cette valeur: 1560000

Il ne semble pas un problème de délai d'attente mais j'obtiens l'erreur délai d'attente?

Reponse pour la future référence:
Editer le fichier /etc/httpd/conf.d/fcgid.conf avec vim.
Remplacez FcgidIOTimeout 45 par FcgidIOTimeout 600.
Redémarrez Apache. Ensuite, le délai d'attente CGI rapide sera résolu.

+0

S'il s'agit d'un travail cron, il devrait être exécuté par le système 'crond' en utilisant l'exécutable PHP au lieu du serveur HTTP. – rid

+0

@rid Malheureusement, beaucoup de gens finissent par écrire le travail cron pour demander une page avec wget/curl. – datasage

Répondre

8

C'est un timeout de mod_fcgid, pas un timeout PHP. Jetez un oeil à la mod_fcgid documentation pour savoir comment le changer, en particulier au FcgidIOTimeout.

+1

Juste au cas où ça aide quelqu'un: Augmentez la valeur FcgidIOTimeout dans fcgid.conf et redémarrez Apache. CentOS: /etc/httpd/conf.d/fcgid.conf Debian: /etc/apache2/mods-enabled/fcgid.conf –

1

Si vous y accédez via http dans votre cronjob, alors cela fonctionnera comme une demande de page Web, puis il peut être affecté par le délai d'expiration d'apache car Apache est impliqué dans le processus. Vous pouvez exécuter le script php directement avec un chemin absolu en utilisant l'interpréteur php pour contourner apache.

+0

Vous pouvez exécuter le script php directement avec un chemin absolu en utilisant l'interpréteur php pour contourner apache Comment pouvons-nous faire cela? –

5

Les scripts Cron ne devraient pas être exécutés correctement par Apache. Votre erreur indique que vous exécutez un délai défini par mod_fcgi.

+0

Les scripts Cron si la compilation correcte ne devrait pas être exécutée par Apache. Alors, où devrions-nous lancer des scripts cron ?? –

+0

@FoysalVai Via la console, répertoire avec quelque chose comme 'php/chemin/vers/php/script.php' – datasage

Questions connexes