2013-04-02 6 views
34

Yerel sunucuya (xampp) 14400 kayıt oluşturacak ve bunları veritabanına ekleyecek bir betik çalıştırmalıyım, max_execution_time = 50000000000'u ayarlamıştım, 0'a ayarlayarak sınırsız yapıp yapamayacağımı bilmiyorum veya -1. Ama bu betiği daha önce 50000000000'e kadar bu max_execution_time ile denedim ve yine de belirli bir noktada durdu, ne zaman yürütme süresini sınırlandırabileceğimi bilmiyorum, bunu çok kez çalıştırıyorum ve tekrar beklemekten ve başarısız olmasından bıktım Bu betiği tekrar çalıştırmadan önce ve bu kez işi bitirmek için değiştirmeliyim?komut dosyası yürütmesini sınırsız hale getir

+0

komut satırından çağrı, bu zaman sınırını hiçbir zaman –

+1

'set_time_limit (0)' komut dosyasının başlangıcında zaman sınırını devre dışı bırakır. Ama erken bir duruş için başka sebepleriniz olabilir. DB'nizde bir sorun veya bellekle ilgili bir sorun olabilir (çok fazla nesne oluşturuyorsanız). PHP'nin hata günlüğünü kontrol edin. – MatRt

+0

Nerede duruyor (ne kadar uzun veya kaç satır eklenecek)? Her seferinde aynı mı yoksa dalgalanıyor mu? PHP hata kayıtlarında herhangi bir şey var mı? –

cevap

89

Sıfırlamak zorundasınız. Sıfır, komut dosyasının sonsuza kadar çalışabileceği anlamına gelir. Senaryonuzun başında aşağıdaki ekleyin:

set_time_limit(0); 

aynı etkiye sahip olacaktır:

ini_set('max_execution_time', 0); 

o max_execution_time

Not PHP belgelerine bakın.

+1

php.ini dosyasına 0 olarak ayarlarsam ne olur? yürürlüğe girecek mi – TooCooL

+4

Evet, ancak bunu küresel olarak ayarlamam. Bu, örneğin sonsuz bir döngü (ve test edilmemiş komut dosyası veya bir kesmek) sunucuyu kapatabileceği anlamına gelir. 'Max_execution_time = 0' 'ı dikkatli ve sadece gerekirse kullanacağım. – hek2mgl

+0

Yerel olarak bir kez çalıştırılmalıyım Bu, daha sonra değiştireceğim, çalışmasının önemli olduğunu ve kayıtların eklenmesini tamamlamadan önce komut dosyasının durdurulmaması gerektiğini. – TooCooL

0

Komut dosyanız PHP zaman aşımından değil, komut dosyasına erişmek için kullandığınız zaman aşımına (örn. Firefox, Chrome, vb.) Bağlı olarak durabilir. Ne yazık ki bu zaman aşımını uzatmanın kolay bir yolu yoktur ve çoğu tarayıcıda bunu yapamazsınız. Burada sahip olduğunuz bir seçenek, bir terminal üzerinden komut dosyasına erişmek. Örneğin, Windows üzerinde Seni yürütmek düşünüyorum emin PHP yürütülebilir ardından yol değişkeni olduğunu ve yapacak: PHP CGI kullanıyorsanız,

C:\path\to\script> php script.php 

Ya Bence bu:

C:\path\to\script> php-cgi script.php 

Ayrıca, diğerlerinin de belirttiği gibi, komut dosyanızda ini_set('max_execution_time', 0);'u da ayarlayabilirsiniz. Bu şekilde bir PHP betiği çalıştırırken, betiğin ilerlemesini periyodik olarak terminale doğru ilerletmek için arabellek kızarmasını kullanabilirsiniz. Bu yöntemle düşündüğüm en büyük sorun, tüm PHP sürecini veya hizmetini durdurmanın dışında, bir kez başladıktan sonra betiği durduramaz.