पर डेटा पास कर रहा है exec()
कमांड का उपयोग कर PHP द्वारा कैस्परजेएस को कॉल किया जा रहा है। कैस्परजेएस के काम के बाद वेबपेज के हिस्सों को पुनः प्राप्त करने के बाद, पुनर्प्राप्त डेटा को PHP पर वापस कैसे किया जा सकता है?कैस्परजेएस पीएचपी
9
A
उत्तर
8
आप आउटपुट को stdout से सरणी में रीडायरेक्ट कर सकते हैं।
this पृष्ठ पर यह कहते हैं कि आप कर सकते हैं:
string exec (string $command [, array &$output [, int &$return_var ]])
यह पर चला जाता है कहने के लिए:
तो उत्पादन तर्क, मौजूद है तो निर्दिष्ट सरणी के हर लाइन के साथ भरा जाएगा आदेश से आउटपुट।
तो मूल रूप से आप निष्पादन कर सकते हैं ('casperjs कमांड, $ array_here);
24
मैं इस तरह के रूप पीएचपी एक सेवा के रूप CasperJS स्क्रिप्ट चल रही है किसी अन्य भाषा में CasperJS से डेटा स्थानांतरित करने के लिए सबसे अच्छा तरीका लगता है। क्योंकि CasperJS PhantomJS से अधिक लिखा गया है, CasperJS PhantomJS का एक एम्बेडेड वेब सर्वर मॉड्यूल नेवला कहा जाता है का उपयोग कर सकते हैं।
कैसे एम्बेडेड वेब सर्वर काम करता है के बारे में जानकारी के लिएयहाँ कैसे एक CasperJS स्क्रिप्ट एक वेब सर्वर शुरू कर सकते हैं के बारे में एक उदाहरण देखें।
//define ip and port to web service
var ip_server = '127.0.0.1:8585';
//includes web server modules
var server = require('webserver').create();
//start web server
var service = server.listen(ip_server, function(request, response) {
var links = [];
var casper = require('casper').create();
function getLinks() {
var links = document.querySelectorAll('h3.r a');
return Array.prototype.map.call(links, function(e) {
return e.getAttribute('href')
});
}
casper.start('http://google.fr/', function() {
// search for 'casperjs' from google form
this.fill('form[action="/search"]', { q: 'casperjs' }, true);
});
casper.then(function() {
// aggregate results for the 'casperjs' search
links = this.evaluate(getLinks);
// now search for 'phantomjs' by filling the form again
this.fill('form[action="/search"]', { q: 'phantomjs' }, true);
});
casper.then(function() {
// aggregate results for the 'phantomjs' search
links = links.concat(this.evaluate(getLinks));
});
//
casper.run(function() {
response.statusCode = 200;
//sends results as JSON object
response.write(JSON.stringify(links, null, null));
response.close();
});
});
console.log('Server running at http://' + ip_server+'/');
संबंधित मुद्दे
- 1. कैस्परजेएस
- 2. कैस्परजेएस/फैंटॉमजेएस https पृष्ठ
- 3. कैस्परजेएस क्लिक() नया एचटीएमएल
- 4. कैस्परजेएस रिमोट डीबगिंग विकल्प
- 5. अपने कैस्परजेएस मॉड्यूल कैसे लिखें?
- 6. चेक/लॉग करें कितना बैंडविड्थ फ़ैंटॉमजेएस/कैस्परजेएस
- 7. जेनकींस और कैस्परजेएस के साथ यूआई टेस्ट
- 8. कैस्परजेएस: स्क्रिप्ट निष्पादन से कैसे बाहर निकलें?
- 9. कैस्परजेएस/फैंटॉमजेएस ईएस 6 वादा पॉलीफिल
- 10. मैं कैस्परजेएस से आईफ्रेम कैसे प्राप्त करूं?
- 11. पीएचपी
- 12. पीएचपी
- 13. पीएचपी
- 14. पीएचपी
- 15. पीएचपी
- 16. पीएचपी
- 17. पीएचपी
- 18. पीएचपी
- 19. पीएचपी
- 20. पीएचपी
- 21. पीएचपी
- 22. पीएचपी
- 23. पीएचपी
- 24. पीएचपी
- 25. पीएचपी
- 26. पीएचपी
- 27. पीएचपी
- 28. पीएचपी
- 29. पीएचपी
- 30. पीएचपी
जबकि मैं मानता हूँ कि इस सिद्धांत में एक अच्छी तकनीक, अभ्यास कैस्पर में phantomjs संसाधनों को मुक्त नहीं करता है, वहाँ रैखिक प्रत्येक अनुरोध के साथ स्मृति उपयोग में वृद्धि प्रतीत होता है। मैं '' casper.clear जोड़ने 'की कोशिश की है()' '' और यहां तक कि स्पष्ट हैकिंग() के लिए '' 'फोन this.page.close()' '' (भीतर से साफ()) पेज। जबकि कॉलिंग बंद करने में मदद मिलती है इससे समस्या हल नहीं होती है। – danmux