Nasıl 30 saniyeden daha uzun çalıştırmak için bir PHP komut dosyası yürütülürken bir Cronjob alabilirim?

5 Cevap php

Nasıl 30 saniyeden daha uzun süre her gün çalışacak bir cron içine bu yazabiliriz? Ayrıca, bir şey söylemek için .htaccess veya cron.php dizininde php.ini dosyasını düzenlemek gerekiyor? Tarayıcı üzerinden 30 saniyeden daha uzun süre için sadece iyi çalışır; kabuk üzerinde, o da sadece iyi çalışır. Ama cron dizi görev olarak, 30 saniye sonra ölür. Ben 1and1 payı hosting değilim.

0 12 * * * php5 /this/is/the/file/cron.php

5 Cevap

Lütfen komut sonlandırma olabilir birkaç şey vardır. Bir php.ini dosyasında belirlenen maksimum yürütme zaman olabilir. Bu durum buysa, set_time_limit(0); sıfır sınır yok demektir ve sıfırdan büyük herhangi bir sayı komut sonlandırıldı önce çalıştırmak için izin vermek için saniye sayısı olduğu ile komut kılabilirsiniz. Bu kez isteği yapmak için tarayıcı için gereken süreyi içermez dikkat etmek önemlidir, bu yüzden dosya yükleme zamanı burada saymak olmaz.

Eğer (Dreamhost gibi) bir hosting ortamda iseniz, bunlar belirli bir süre sonra herhangi bir PHP sürecini öldürecek süreç saatler var. Bu etrafında alınamıyor. Sen (Dreamhost için, onlar size PS sunan konum olmasını istiyorsanız) daha uzun süre için komut dosyasını çalıştırmak için erişmek için yapmanız gerekenleri görmek için hosting sağlayıcınıza başvurmanız gerekir.

Php başlatmak için bu sözdizimini kullanın:

php -c /path/to/another/php.ini /this/is/the/file/cron.php

Daha sonra farklı bir php.ini dosyasında farklı bir zaman aşımı (veya zaman aşımı yok) belirleyebilirsiniz.

ini_set('max_execution_time', 600);

Php dosyanızın üstüne bu ekleyin ve 600 saniye sürecek. Daha fazla bir şey tavsiye edilmez ancak isterseniz gitmek olabilir.

Ben sadece kullanmak istiyorum wget http://path.to.myscript.php

O 30 sonra ölüyor Eğer komut dosyası 30 saniyeden daha uzun çalışmasına izin vermek için php.ini in max_execution_time = 60 ayarlamanız gerekebilir.

Ayrıca kullanabilirsiniz ini_set('max_execution_time', 60)

Manuel sayfa diyor Fakat, bazı durumlarda (yani güvenli modda çalışıyor) bu hiçbir etkiye sahip olacaktır: http://uk.php.net/manual/en/info.configuration.php#ini.max-execution-time

Ayrıca müşteri hattı için php.ini tarayıcı için farklı maksimum yürütme değerlere sahip olması mümkün olabilir. Ben bazen bunu gördük.