2015-06-25 13 views
8

Amaç: google app motorunu kullanıyorum ve sitem paletli bir garip hata yaşıyorumÇağrı URL için uygulama hata 5 x

.

Her gece bir siteyi otomatik olarak tarayacak bir arka planım var. Bu, php'de zaman sınırlamaları nedeniyle bir pushQueue'ye itilen bir görev tarafından başlatılır.

Sorun: manuel görev oluşturur komut çalıştırdığınızda hatasız beklendiği gibi

, görev tamamlar. Ancak, cron görevi başlattığında aşağıdaki hatayı alıyorum. URLFetch için

Çağrı URL için uygulama hata 5 x

Kod: Ben $ url olarak beni deli olan ince olduğunu görebilirsiniz syslog'a

function url_get_contents ($Url) { 
    global $retry; 
    try { 
     if (!function_exists('curl_init')){ 
      die('CURL is not installed!'); 
     } 
     $ch = curl_init(); 
     curl_setopt($ch, CURLOPT_URL, $Url); 
     curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); 
     $output = curl_exec($ch); 
     curl_close($ch); 
     return $output; 
    } catch (Exception $e) { 
     syslog(LOG_INFO, 'Caught exception: ', $e->getMessage()); 
     if($retry > 0){ 
      $retry -= 1; 
      return url_get_contents($Url); 
     } 
     else{ 
      return null; 
     } 
    } 
} 

Teşekkür Tam olarak aynı betik cron ile değil elle başlatıldığında çalışır.

Bunu nasıl düzeltebilirim?

Şimdiden teşekkürler.

+1

kontrol. – Inurosen

+1

Ah bu olabilir, bunu GAE'de nasıl kontrol edeceğinizi biliyor musunuz? Ben bir php.ini var, ama bir cli php kullanıp kullanmadığını nasıl anlarım? – Grushton94

+1

Neden URLFetch işleyicisini kullanan, ancak sorunun cURL olup olmadığını size söyleyecektir file_get_contents() - kullanmayın. – Tom

cevap

1

DÜZENLEME: curl kesinlikle yüklenir, ilk önce onu kontrol eden bir deyiminiz olduğundan, yanıtım artık geçerli değil.

CURL hata listesi http://curl.haxx.se/libcurl/c/libcurl-errors.html, hata 5'in CURLE_COULDNT_RESOLVE_PROXY olduğunu söylüyor. Her nasılsa, kıvrım muhtemelen web'e erişemez.

Kıvrılma muhtemelen CLI ortamınız için etkin değil. Burada yapılandırma dışarı

Kontrol:

php5/  phpmyadmin/ 
[email protected]:~# cd /etc/php5 
[email protected]:/etc/php5# ls 
apache2 cli conf.d mods-available 
[email protected]:/etc/php5# cd cli/ 
[email protected]:/etc/php5/cli# ls 
conf.d php.ini 
[email protected]:/etc/php5/cli# cd conf.d 
[email protected]:/etc/php5/cli/conf.d# ls 
10-pdo.ini 20-gd.ini  20-mssql.ini 20-mysql.ini  20-pdo_mysql.ini 
20-curl.ini 20-mcrypt.ini 20-mysqli.ini 20-pdo_dblib.ini 
[email protected]:/etc/php5/cli/conf.d# 
4

"uygulama hatası 5" istek tarihi aşıldı anlamına gelir.

Sen seçenek CURLOPT_TIMEOUT kullanarak istek tarihini artırabilir, bu nedenle kod şey gibi görünebilir: php cli ortamı için doğru tertibata sahip olursa

$ch = curl_init(); 
    curl_setopt($ch, CURLOPT_URL, $Url); 
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); 
    curl_setopt($ch, CURLOPT_TIMEOUT, 60); // 60 second timeout 
    $output = curl_exec($ch); 
İlgili konular