2010-06-29 6 views
2

Fondamentalement, j'ai un problème. Je poste des statuts facebook de mes utilisateurs en utilisant un travail cron, mais quand je lance le cron depuis le navigateur, je reçois une erreur après environ 30 secondes. J'ai édité le fichier .ini pour permettre le temps d'exécution maximum mais cela ne semble pas fonctionner.L'exécution d'un script PHP à partir de SSH contourne-t-elle le temps d'exécution maximal?

Il met à jour les états des premiers 700 utilisateurs mais après cela il s'arrête. Puis-je l'exécuter à partir du terminal ou y a-t-il quelque chose que je puisse vérifier/faire pour contourner ce problème?

+0

try http://php.net/set_time_limit? –

Répondre

2

Lors de l'exécution de scripts PHP à partir de la ligne de commande, le temps d'exécution maximal par défaut est 0, c'est-à-dire illimité. À partir d'un contexte HTTP, d'autres paramètres peuvent arrêter votre script, y compris la directive Apache Timeout. C'est définitivement un travail que je ferais avec PHP CLI.

Je voudrais activer error logging qui décrirait les limites de votre script. Il y a beaucoup de possibilités - vous pouvez atteindre la limite de mémoire, le temps d'exécution peut être trop bas, l'API Facebook peut limiter vos demandes, etc.

0

Assurez-vous que vous voyez des erreurs en faisant:

error_reporting(E_ALL); 
ini_set('display_errors',1); 

en haut de votre script.

Vous pourriez avoir un plafond de max_execution_time, ou vous pourriez manquer de mémoire, etc. Des messages d'erreur vous aideront à le déterminer. Comme Frank Farmer l'indique dans son commentaire, vous pouvez utiliser set_time_limit(0); dans votre script pour lui permettre de fonctionner indéfiniment. Si vous rencontrez des problèmes de limite de mémoire, vous pouvez augmenter la limite de mémoire dans votre script (ini_set('memory_limit',...);) - mais vous devriez vraiment envisager de corriger votre code pour qu'il ne consomme pas de mémoire.

Questions connexes