Ben atlamak istiyorum fsockopen hata

2 Cevap php
$sock = fsockopen($url_parts['host'], (isset($url_parts['port']) ? (int)$url_parts['port'] : 80), $errno, $errstr, 30);
if (!$sock) return false;

Ben ziyaret ediyorum ki, URL'ler için benim db üzerinde bir liste var ve occassionally ben bu olsun:

Ben alıyorum "Ölümcül hata: 30 saniye Maksimum yürütme süresi aşıldı ..."

Bu soket veya başka bir şey izin vermez sitesine gider bu yana, beklenen.

Nasıl bu kötü siteleri atlamak yok, bu yüzden benim komut diğer iyi olanlar için çalışmaya devam ediyorum?

Teşekkürler

2 Cevap

Şu anda 30 saniyeye ayarlanır fsockopen() (aramanızın son parametresi) için bağlantı zaman aşımı indirin. Aksi takdirde PHP uzak ana bilgisayara bağlanmak için 30 saniye bekleyin ve sonra nedeniyle maksimum yürütme zaman başarısız olur.

Sizin ihtiyaçlarınıza uygun değeri ile oynayabilir, ancak soket birkaç saniye içinde açık değilse genellikle hiçbir bağlantısı mümkün olduğunu varsayabiliriz.

Ayrıca, size komut dosyası maksimum yürütme süresini artırmak için set_time_limit() kullanmak isteyebilirsiniz.

Sorun fsocketopen zamanlama dışarı ile değil, ancak bir apache modülü olarak php çalışıyorsa o 30 saniye olarak belirlenmiştir varsayılan php.ini içinde maksimum yürütme zamanı ulaşan php script ile, {[kontrol edin ( 0)]} php.ini içinde, daha fazla yürütme zaman almak için bu artış, size seçenek varsayılan olarak cli için php.ini üzerinde devre dışı olduğunu göreceksiniz.