के साथ PHP कर्ल/एफ़टीपी के साथ प्रेषित किया जा रहा है, मुझे हाल ही में एक समस्या का सामना करना पड़ा है, जहां मेरे आवेदन के लिए उच्च ट्रैफ़िक की अवधि के दौरान, छोटे सीएसवी फाइलों को कर्ल/एफ़टीपी के साथ शून्य बाइट्स के साथ भेजा जा रहा है। हालांकि, जब मैं अपने फाइल सिस्टम पर फ़ाइल देखता हूं तो मैं देख सकता हूं कि यह निश्चित रूप से खाली नहीं है और आकार में शून्य बाइट नहीं है।फ़ाइलों को शून्य बाइट्स
$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);
मैं भी कोड में से निपटने के लिए कुछ बुनियादी त्रुटि है जहां cURL एक त्रुटि देता है:
यह मेरा PHP कोड है
if (curl_error($ch)) {
throw new Exception("File could not be sent via FTP: " . curl_error($ch));
}
हालांकि, मैं ध्यान दें है कि इस उदाहरण में कोई अवसर जहां अपवाद फेंक दिया गया है और कोड निष्पादन जारी है।
क्या मेरे पास कोई कारण नहीं है कि मेरे फाइल सिस्टम पर 5 केबी सीएसवी फ़ाइल है, लेकिन एफ़टीपी सर्वर मैं फाइल भेज रहा हूं जिसमें केवल शून्य बाइट फ़ाइल है? क्या यह साल के इस समय में उच्च मात्रा में यातायात के कारण संभवतः एक संचरण मुद्दे को इंगित करता है?
करने के लिए कुछ प्रवेश जोड़ना चाहिए। 'Curl_exec' कॉल से पहले और बाद में लॉग पॉइंट जोड़ने पर विचार करें? क्या आपके पास [एफ़टीपी एक्सटेंशन] (http://php.net/book.ftp) स्थापित है? उपयोग करने के लिए यह अधिक परेशान है, लेकिन आप इससे बेहतर त्रुटियों को जोड़ सकते हैं। – Charles
हां, समस्या निवारण के लिए यह एक अजीब मुद्दा है क्योंकि यह हर फ़ाइल या यहां तक कि सभी बार भी नहीं हो रहा है। यह 500 में 1 फ़ाइल की तरह है, या इससे भी अधिक। – crmpicco