posta için maksimum yürütme zaman sınırı önlenmesi php [çoğaltmak]

3 Cevap

Bu soru burada zaten bir cevabı var:

3 Cevap

Sadece yürütme zamanı ayarlanamaz çift kontrol için, burada iki öneri.


Sadece bir e-posta göndermeden önce set_time_limit() diyebiliriz. Göre PHP docs,

Çağrıldığında, set_time_limit () sıfırdan aşımı sayacını yeniden başlatır. Zaman aşımı komut yürütme içine varsayılan 30 saniye, 25 saniye gibi set_time_limit (20) gibi bir çağrı yapılmış ise başka deyişle, komut aşımından önce 45 saniye toplam çalışacaktır.

Örneğin:

foreach ($emails as $email) {
    set_time_limit(30);
    send($email, ...);
}


Başka bir seçenek cron üzerinden gerçekleştirilir. Eğer bir cron işi PHP'nin çalışan olduğundan, specify your own php.ini yapabilirsiniz. Aşağıdaki gibi size komut dosyası yürütebilir:

php -c /custom/directory/my_php.ini my_script.php

Nerede my_php.ini belirtebilirsiniz:

max_execution_time = 0     ; (unlimited)

script cron ile başlatılan eğer PHP-CLI "PHP Komut Satırı Arabirimi" kullanıyorsunuz demektir.

PHP documentation belirttiğimiz gibi CLI kullanırken, sizin hiçbir zaman sınırı vardır.

Peki, bu konuda endişelenmenize gerek yok: max_execution_time unlimited ayarlanır.

Küçük parçalar halinde görev kıracak. Gerçek iş yürütmenin "devlet" tutmak için veritabanını kullanın.

Bu yaklaşım olmanın avantajına sahiptir scalable: muhtemelen sonuna kadar olacak, sen büyüdükçe daha çok e-postalar göndermek için değil zorunda?