Nasıl bir PHP bir sonuç bekleyeceğiz dahil süreyi kısıtlayabilirsiniz?

4 Cevap php

Ben uzak bir sunucudan bir dosya istediğinde, yerel bir sınıf da dahil olmak ediyorum. Bu süreç oldukça güvenilmez - uzak sunucu genellikle aşırı çünkü - ve bazen veriyor ve devam ediyor eklemek için önce 20 ya da öylesine saniye beklemek zorunda.

Ben dahil script yürütme zamanında bir sınırı var istiyorum; Beş saniye demek.

Şu kodu:

include('siteclass.class.php');

Update:

Sınıf içinde benim kodu:

$movie = str_replace(" ","+",$movie);
$string = join('',file($siteurl.$l.'/moviename-'.$movie));

if(!$i) { static $i = 1;}
if($file_array = $string)
{
    $result = Return_Substrings($file_array, '<item>', '</item>');

    foreach($result as $res) {

O kadar yükleme gider gibi, temelde bu. Dahili işleme yaklaşık 0.1 saniye sürer. Ben bu oldukça yapılabilir sanırım.

4 Cevap

Bir önerme gibi bu almak, ben bu kodu test vermedi unutmayın:

$fp = fopen('siteclass.class.php', 'r');

stream_set_timeout($fp, 2);
stream_set_timeout($fp,$timeout);
$info = stream_get_meta_data($fp);

if ($info['timed_out']) {
  echo "Connection Timed Out!";
} else {
  $file = '';
  while (!feof($fp)) {
    $file .= fgets($fp);
  }
  eval($file);
}

Zaman aşımı saniye ayarlanır, bu nedenle örnek iki saniye için ayarlanır.

Bu aradığınız ne tam bir uyum değil, bu içerir ve 25 saniye toplam yürütme için zaman sınırı koyacaktır. Zaman sınırı aşıldığı takdirde, bu ölümcül bir hata atar.

set_time_limit(25);

set_time_limit() yapabilir gibi ne istediğinizi sesler:

PHP Manual for that function

Yerine sadece komut dosyası kendisi bir zaman sınırı belirleyerek iptal edilme, güzel kurtarmak sonra HTTP isteği üzerine bir zaman aşımı var dahil kodunu düzeltmek ve.

Benim tavsiyem sorunun köküne almak yerine geçici bir çözüm arıyor olacaktır.