private function convert_to_csv($input_array, $output_file_name, $delimiter) {
$temp_memory = fopen('php://memory','w');
foreach ($input_array as $line) {
fputcsv($temp_memory, $line, $delimiter);
}
fseek($temp_memory, 0);
header('Content-Type: application/csv');
header('Content-Disposition: attachement; filename="' . $output_file_name . '";');
fpassthru($temp_memory);
}
मैं उपरोक्त फ़ंक्शन का उपयोग डेटा की एक सरणी लेने, CSV में कनवर्ट करने और ब्राउज़र में आउटपुट करने के लिए करता हूं। दो प्रश्न:मेमोरी, ईमेल, और मेमोरी से हटाएं
- क्या फ़ाइल HTTP के माध्यम से डाउनलोड होने के बाद स्मृति से हटा दी गई है?
- यह वही फ़ंक्शन कैसे लिखा जाएगा कि फ़ाइल का उपयोग किया जा सकता है (उदाहरण के लिए, PHPMailer के साथ भेजे गए ईमेल अनुलग्नक के रूप में उपयोग करने के लिए) और उसके बाद तुरंत स्मृति से हटा दिया गया?
संपादित करें: वर्किंग कोड - लेकिन फाइल करने के लिए लिखते हैं, नहीं स्मृति
public function emailCSVTest() {
$test_array = array(array('Stuff','Yep'),array('More Stuff','Yep yep'));
$temp_file = '/tmp/temptest.csv';
$this->convertToCSV($test_array, $temp_file);
$this->sendUserEmail('Test Subject','Test Message','[email protected]',$temp_file);
unlink($temp_file);
}
private function convertToCSV($input_array, $output_file) {
$temp_file = fopen($output_file,'w');
foreach ($input_array as $line) {
fputcsv($temp_file, $line, ',');
}
fclose($temp_file);
}
फिर भी अनुत्तरित: मूल कार्य स्मृति से फ़ाइल को हटा करता है या नहीं?
मैं सिर्फ फाइल सिस्टम ('उदाहरण के लिए/tmp') पर फ़ाइल की दुकान होगी, (अनुलग्नक के साथ) मेल भेजने , और बाद में फ़ाइल नाम पर 'अनलिंक() 'पर कॉल करें। –
तो पहली पंक्ति को $ temp_file = fopen ('/ tmp/abc.csv', 'w') में बदलें, फ़ाइल बनाएं, फिर ficek >> fpassthru को $ temp_file के साथ बदलें, अनलिंक के साथ मूल फ़ंक्शन में अनुसरण करें ($ temp_file)? – FurryWombat
ऐसा कुछ, हाँ। पहले फाइल को 'fclose()' को मत भूलना। ('अनलिंक() 'से पहले) –