CURL isteği eksik, şüpheli aşımı ama emin değilim

1 Cevap php

Ben şu anda bir sitenin admin alanı csv formatında ürün verilerini ihracat gibi günlük cron çalışan bir php script ile CURL kullanıyorum.

Veri ihracat normal şekilde bir tarayıcıda İhracat sayfasına gidin ve yapılandırmayı ayarlamak için olacak, sonra "ihracat verileri" butonuna tıklayın. Ben ihracat am ürünlerin sayısı çok büyük olduğunu ve ihracat verileri fazla 5-10 dakika sürer Ama, ben cron üzerinden günlük olarak bu taklit php curl işlevini kullanmaya karar verdik.

Daha önce, bu iyi çalışıyor, ama ben 500 + ile mağaza içinde ürünlerin sayısı arttı gibi yakın, komut ihraç veri döndürmek için başarısız olur. Bir tarayıcıda "ihracat" butonuna tıklayarak yoluyla elle test verileri doğru dönmek. Böylece elle bir tarayıcıda ihracat çalışan hayır "zaman aşımı" sorunu vardır.

Cron çalıştırdığınızda ben test ve ürün numarasını (böylece zaman gerekli) / azalan kaldırarak ettik, php-curl komut tekrar çalışıyor.

Bu yüzden özellikle php curl fonksiyonu ile, zaman aşımı sorunu ile ilgili bir şey olduğunu sanıyorum.

I've set both CURLOPT_TIMEOUT and CURLOPT_CONNECTTIMEOUT to '0' respectively to try. In the php-curl script, I've also set "set_time_limit(3000)". But still it does not work, and the request will timeout, with the script failing to return with a complete set of csv data.

Beni çözmek / bu sorunu anlamaya yardımcı Herhangi bir yardım çok takdir edilecektir!

Düzenlendi: curl komut verme işlevi çağıran kod eklendi parçasıdır.

$interface = new StoreInterface(); 
echo "Start exporting at " .  date('l jS \of F Y h:i:s A') . "\n";
set_time_limit(3000);
$result_html = $interface->exportProducts();
//parse $result_html to only retain the csv format
preg_match('/<pre>(.*)<\/pre>/s',$result_html[0],$output);
if(strlen($output[1])<10) {   //debugging for now
echo "Export did not happen correctly. Quit\n";
    die('Export unsuccessful');
}
file_put_contents($output_path,$output[1]);
echo "Script completed. Thank you! \n";

1 Cevap

Sen bir günlük dosyasına tüm kıvırmak transferi ayrıntıları oturum ve herhangi bir sorunları denetlemek için aşağıdaki kıvırmak seçenekleri kullanabilirsiniz.

$fp = fopen('./debug/transfer.log');
curl_setopt($curl, CURLOPT_VERBOSE, TRUE);
curl_setopt($curl, CURLOPT_STDERR, $fp);

Ayrıca ben CURLOPT_TIMEOUT seçeneği belirsiz bir zaman aşımı için "0" değerini belirten desteklemiyor inanıyorum. Burada azami zaman aşımı değeri belirtmek gerekir.