से फ़ाइल लोड करने के लिए टाइमआउट सेट करें, इसलिए मेरे पास एक दिलचस्प स्थिति है और मुझे यकीन नहीं है कि इसके आसपास कैसे जाना है।ईबीएस शेयर
हमारे पास एक प्रक्रिया है जो हमारे बिक्री डेटा पर एक समग्र रूप लेती है और फिर Google चार्ट के माध्यम से एक ग्राफ बनाता है। डेटाबेस (या उस मामले के लिए Google) को हथियाने से रोकने के लिए यह केवल हर 30 मिनट में चलता है। यह पिछली फ़ाइल को यह निर्धारित करने के लिए देखता है कि यह 30 मिनट की सीमा पर है या नहीं, और यदि ऐसा है, तो यह नई फ़ाइल बनाता है। लोड बैलेंसर के पीछे हमारे पास दो सर्वर हैं। तो दोनों फाइलों को इस फ़ाइल को स्टोर करने के लिए एक ही स्थान तक पहुंच होनी चाहिए। हमने इसे ईबीएस शेयर का उपयोग करके किया, एनएफएस के माध्यम से घुड़सवार (हमारा पूरा सेटअप एडब्ल्यूएस में है)। यह प्रक्रिया ठीक काम करती है।
समस्या कभी-कभी ईबीएस शेयर धीमा या डिस्कनेक्ट होता है। यह तब एक लहर प्रभाव का कारण बनता है, हमारे आंतरिक उपकरणों में इस फ़ाइल पर प्रक्रिया करने की प्रतीक्षा (जब तक आप नोटिस बंद नहीं करते)। मैंने कुछ धागे पढ़े हैं (जैसे this one) जो stream_set_timeout के बारे में बात करते हैं लेकिन यह स्पष्ट नहीं है कि आप फ़ाइल को लोड करने के साथ इसका उपयोग कैसे करेंगे (यह वास्तव में एक स्ट्रीम नहीं है) और मैं कोई उदाहरण नहीं ढूंढ पा रहा हूं।
यहाँ एक टुकड़ा आप एक विचार क्या PHP फ़ाइल
$file = '/ebs/path/to/image.png';
$newfile=false;
if(!is_file($file)) $newfile=true;
elseif(filemtime($file)+1800 < time()) {
$newfile=true;
unlink($file);
}
if(!$newfile){
$i=imagecreatefrompng($file);
header('Content-Type: image/png');
header('Expires: ' . gmdate('D, d M Y H:i:s', filemtime($file) + $timeout) . ' GMT');
imagepng($i);
imagedestroy($i);
exit;
} else {
// Build and output a new file here
}
कर रहा है मैं इस स्क्रिप्ट के लिए एक टाइमआउट कैसे बना सकते हैं देने के लिए है?
मूल कारण यह है कि "ईबीएस धीमा या डिस्कनेक्ट हो गया है", इसलिए अंतिम समाधान इसे ठीक करना है। चाहे एडब्ल्यूएस कार्य पर निर्भर है, एक और सवाल है। –