मैंने अपने ऐप के वेबशॉट बनाने के लिए एक स्क्रिप्ट सेट की है। यह पूरी तरह से चलाता है और सब ठीक है जब तक मैं एक टूटी हुई यूआरएल के साथ एक छवि का सामना:phantomJS वेबपृष्ठ टाइमआउट
"<img src='http://testserver.our.intranet/fetch/image/373e8fd2339696e2feeb680b765d626e' />"
मैं इससे पहले कि यह बस हमेशा के लिए पाशन किया गया था, नीचे का उपयोग कर 6 सेकंड के बाद स्क्रिप्ट को तोड़ने में कामयाब रहे।
लेकिन, नेटवर्क अनुरोध (AKA
DOM
से बाहर छवि लेने के लिए) पर ध्यान न दें और उसके बाद छवि के बिना अंगूठे बनाने के लिए, आगे बढ़ने के लिए यह संभव है (या एक इंजेक्शन छवि लापता छवि के साथ!)
var page = require('webpage').create(),
system = require('system'),
address, output, size;
if (system.args.length < 3 || system.args.length > 5) {
phantom.exit(1);
} else {
address = system.args[1];
output = system.args[2];
page.viewportSize = { width: 640, height: 640 };
page.zoomFactor = 0.75;
page.clipRect = { top: 10, left: 0, width: 640, height: 490 };
try{
page.open(address, function (status) {
if (status !== 'success') {
console.log('Unable to load the address!');
phantom.exit();
} else {
window.setTimeout(function() {
page.render(output);
phantom.exit();
}, 200);
}
});
} finally{
setTimeout(function() {
console.log("Max execution time " + Math.round(6000) + " seconds exceeded");
phantom.exit(1);
}, 6000);
}
}
यह एक उत्कृष्ट सवाल है। हमें एक समान समस्या है, सिवाय इसके कि इसे हल करना थोड़ा कठिन है। हमारे पास एक ग्राहक की वेबसाइट है जिसमें कस्टम जावास्क्रिप्ट है जो खराब लिखा गया है। ऐसा लगता है कि वेबकिट लटकने का कारण बन रहा है। हमारे पास ऐसी वेबसाइटों की एक बड़ी श्रृंखला है जिसे हम परीक्षण करना चाहते हैं, लेकिन यदि ग्राहक का कस्टम जेएस वेबकिट तोड़ रहा है तो यह काम नहीं करता है। टाइमर ओबीजे एक अच्छा समाधान है, लेकिन मुझे आश्चर्य है कि किसी के पास एक अलग समाधान है या नहीं। ... – cliffbarnes