Win PHP / Konu ödemek için en iyi yolu nedir?

5 Cevap php

I have a php script that checks for updates on many (thousands) of sites. On occasion (more frequently as the number of sites increases), I get an execution timeout on the update of one of these sites, and the whole script goes down the drain.

The best idea I could come up with is to fork each update, so if it dies, the overall update just continues. From what I gathered, it seems PHP threading isn't something to rely on, especially on a windows platform (which I unfortunately have to work on).

Ben bir çatallaşma mekanizması olarak kıvrılmasını kullanma hakkında düşündüm, ama o (zaman ve işlem gücü olarak) sunucu için çok fazla pahalı olmayacak?

PHP / parçacığı bölmek hakkında bazı fikirler ve tecrübe duymak mutlu olurum ...

thanks, Omer.

5 Cevap

Eh, sonunda ben curl için gittim ve gayet güzel çalışıyor.

Bu durumda üretim serer, Windows iken ben bir Mac üzerinde geliştirmek gibi, bir çapraz-platform çözümü gerekiyordu. Anlamına geliyordu pcntl söz konusu oldu.

Ben kendi sunucusuna kıvırmak binlerce istek göndererek onu domuz ve zamanda sitede kullanıcıları rahatsız olabilir diye endişelendim, ama yanılmışım.

Ben, ancak, aksi takdirde sadece zaman aşımına, tüm kıvırmak aramaları başlatan komut dosyası için bir set_time_limit(0) eklemek zorunda yoktu.

Kullanmak için gidiyoruz eğer cURL size cURL düzene ve sitelerin bir dizi etkileşim sağlar yöntemlerin çok * ailenin içine bakmak. Eğer çok yüksek olsun asla izin böylece söyleniyor, ayrıca bazı keyfi yüksek numaraya maksimum yürütme zamanı (ini_set yoluyla) ayarlayabilir ve / veya kendi Watchdog sayacı tutmak olabilir.

Ama evet, sonuçta sorunları ve PHP tam iplik destek eksikliği çalıştırmak için gidiyoruz. Bu yüzden en iyi bahis, örneğin, diğer alternatiflere bakmak için doğal diş destek sağlayan diğer dilleri / platformları.

Ben çözümleri iyi değildi PCNTL extension.It kullanarak php diş çeşit başardı ama o hile yaptı.

http://www.php.net/manual/en/ref.pcntl.php

Ayrıca aşağıdaki bağlantıları deneyin, bana uygulaması hakkında gitmek nasıl bir fikir verdi.

http://www.van-steenbeek.net/?q=php_pcntl_fork

http://www.hudzilla.org/phpbook/read.php/16_1_3

http://www.electrictoolbox.com/article/php/process-forking/

Umarım bu yardımcı olur, ama php olsa Threading ile çok iyi değil.

Sen yönergede max_execution_time to 0. This should remove the max execution time, and allow the script to run without incurring this error. This value has to be set in your php.ini file however - using ini_set çalışmaz ayarlayabilirsiniz.

set_time_limit(0);

set_time_limit docs