Büyük dosyalar için kıvrılma üreten ölümcül hatayı önlemek

0 Cevap php

Ben (vb konumu, sayfa başlığı yönlendirme örneğin http durum kodu, mimetype, http) verilen bir url hakkında bilgi edinmek için curl ve php kullanıyorum.

  
 $ch = curl_init($url);
 $useragent="Mozilla/5.0 (X11; U; Linux x86_64; ga-GB) AppleWebKit/532.9 (KHTML, like Gecko) Chrome/5.0.307.11 Safari/532.9";
 curl_setopt($ch,CURLOPT_HTTPHEADER,array (
        "Accept: application/rdf+xml;q=0.9, application/json;q=0.6, application/xml;q=0.5, application/xhtml+xml;q=0.3, text/html;q=0.2, */*;q=0.1"
    ));
 curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
 curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
 curl_setopt($ch, CURLOPT_USERAGENT, $useragent); 
 curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
 $content=curl_exec($ch);
 $chinfo = curl_getinfo($ch);
 curl_close($ch);

Bu, genel olarak iyi çalışır. Ancak, büyük bir dosyaya url puan sonra ölümcül bir hata alırsanız:

Fatal error: tükenmiş 16777216 bayt İzin bellek boyutu (14.421.576 bayt ayırmaya çalıştı)

Zaten bunu önlemenin var mı? Örneğin, dosya çok büyükse vazgeçmek Kıvrılmaları anlatarak, veya hatayı yakalayarak?

Geçici bir çözüm olarak, ben ekledim

curl_setopt($ch, CURLOPT_TIMEOUT, 3); which assumes that any file that takes longer than 3 seconds to load will exhaust the allowed memory, but this is far from satisfactory.

0 Cevap