2012-12-11 25 views
5

benim uygulamaya yüksek trafik dönemlerde, küçük CSV dosyalarını sıfır bayt ile cURL/FTP ile neresine gönderildiğine, Geçenlerde bir sorunu karşılaştım. Bununla birlikte, dosya sistemimdeki dosyayı görüntülediğimde, kesinlikle boş olmadığını ve boyut olarak sıfır bayt olduğunu göremiyorum. cURL hata verir nerededosyalar PHP cURL/sıfır bayt ile FTP ile iletilen

$ch = curl_init(); 
$fp = fopen($bFile, 'r'); 
curl_setopt($ch, CURLOPT_URL, 'ftp://'.FTP_SERVER .'/'.FTP_DIRECTORY.$file_name); 
curl_setopt($ch, CURLOPT_USERPWD, FTP_USER.':'.FTP_PASS); 
curl_setopt($ch, CURLOPT_UPLOAD, 1); 
curl_setopt($ch, CURLOPT_INFILE, $fp); 
curl_setopt($ch, CURLOPT_INFILESIZE, filesize($bFile)); 
curl_setopt($ch, CURLOPT_FTP_USE_EPSV, false); 
curl_exec($ch); 

Ben de kodda işleme bazı temel hata var: Ancak

if (curl_error($ch)) { 
    throw new Exception("File could not be sent via FTP: " . curl_error($ch)); 
} 

hiçbir orada bu örnekte not

Bu benim PHP kodu istisnanın atıldığı ve kod yürütme devam ettiği durumlar.

Ben, diyelim ki, bir 5kB CSV benim dosya sistemi üzerinde dosya var hiçbir neden yoktur olurdu, ancak FTP sunucusu ben sadece sıfır bayt dosya vardır dosyayı gönderiyorum? Bu, muhtemelen yılın bu zamanındaki yüksek miktarda trafikten kaynaklanan bir iletim sorununa işaret ediyor mu?

+0

gibi Kıvrık gönderiyor farklı değerlere bazı günlük bir gerçek ayı giderilir gibi geldi eklemek gerekir. Curl_exec' çağrısından önce ve sonra günlük noktaları eklemeyi düşünün. [FTP uzantısı] (http://php.net/book.ftp) yüklü mü? Kullanmak daha can sıkıcı, ama bunun dışında daha iyi hatalar koyabiliyor olabilirsiniz. – Charles

+0

Evet, her dosyada ve hatta sık sık gerçekleşmediğinden sorun gidermek zor bir sorundur. 500'de 1 dosya gibi, hatta daha fazla. – crmpicco

cevap

2

yüksek trafik sırasında söz beri. Göndermeye çalıştığınız CSV dosyalarında çok fazla veya okuma/yazma etkinliği olması mümkün mü? Belki de aslında başarısız olan fopen ve böylece 0 bayt gönderiyoruz, ancak doğru dosya adıyla. Bu sadece bir uyarı oluşturacak, böylece yakalanmayacak.

Belki sen filesize($bFile) ve $fp

+0

CSV dosyaları, bir betik tarafından oluşturulup yazılır ve silinir (aynı mesajı gönderir), bu yüzden dosyada çok fazla okuma/yazma etkinliği olacağını düşünmüyorum. Yani dosyanın dosya boyutu etrafında oturum açmak iyi bir nokta, bence bunu yapmam gerekecek. – crmpicco

+0

Bu gibi bir kontrol ekledim eğer if (filesize ($ bFile) == false veya filesize ($ bFile) == '0') {'ve' if ($ fp === false) {' 'fopen' başarısız oluyor, bu yüzden sorunun boş dosyaları gönderebileceği konusunda daraltabileceğini göreceğiz. – crmpicco

İlgili konular