2015-07-13 9 views
11

के साथ लंबे मतदान के साथ मैं स्प्रिंग एमवीसी चैट क्लाइंट के लिए this example का पालन कर रहा हूं जो HTTP लंबे मतदान का उपयोग करता है।PHP कर्ल

मेरा वेब सर्वर पोर्ट 7555 पर स्थित है, और मुझे पोर्ट 80 (ब्राउज़र) से पोर्ट 7555 पर HTTP लंबे मतदान अनुरोध करने में सक्षम होना चाहिए, इसलिए मैंने एक PHP स्क्रिप्ट बनाई जो मेरी webservice को कॉल करता है।

($.ajax({ 
    url : "http://localhost/myphpscript.php?index=" + i, 
    type : "GET", 
    cache: false, 
    success : function(messages) { 
     //do stuff 
    } 
})); 

PHP फ़ाइल स्थित है मेरी स्थानीय होस्ट में स्थित है:

<?php 
$index = $_GET["index"]; 
echo $index; 
echo $index2; 

$urlVar = "http://localhost:7555/test?" . $index . $index2; 

$ch = curl_init(); 
curl_setopt($ch, CURLOPT_URL, $urlVar); 
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); 
curl_setopt($ch, CURLOPT_PORT, 7305); 
curl_setopt($ch, CURLOPT_TIMEOUT, 60); 
curl_exec($ch) 
?> 

मैं इस पीएचपी इस तरह के मानकों के साथ मेरी जावास्क्रिप्ट से फ़ाइल कहते हैं। यह काम नहीं कर रहा है क्योंकि जावास्क्रिप्ट PHP को कॉल करने लगता है (जो यूआरएल को कॉल करता है) अंतहीन रूप से। क्या मैं PHP कर्ल के साथ सही ढंग से लंबे मतदान कर रहा हूं? क्या मुझे जावास्क्रिप्ट में अजाक्स कॉल करने की ज़रूरत है क्योंकि मैं कर्ल में HTTP कॉल हूं?

+1

पोर्ट परिणाम गूंज करने की आवश्यकता होगी करने के लिए अलग है जिसे कर्ल में बुलाया जाता है। – Inceddy

+0

आपने RETURNTRANSFER सेट किया है लेकिन आप परिणाम नहीं पकड़ते हैं !? 'echo curl_exec ($ ch) 'गायब है। – Inceddy

उत्तर

0

क्योंकि इसे cross site requests (यह बंदरगाहों के लिए भी है) भेजने की अनुमति नहीं है, आपको यह PHP relais चीज़ करने की आवश्यकता है।

कभी भी कम नहीं। एक ही अनुरोध का अनुरोध बार-बार (मतदान) लगभग सही है लेकिन आपकी वेब-सेवा को कनेक्शन को तब तक खुला रखना चाहिए जब तक कि इसमें कुछ नई जानकारी न हो या अनुरोध समय (लंबी मतदान) हो।

क्या करता है अपने वेब सेवा (HTTP-स्थिति ठीक? कोई भी सामग्री?)

+0

यह लंबे समय तक मतदान नहीं करता है, यह सिर्फ एक अनंत लूप में सर्वर को बार-बार कॉल करता रहता है। क्या इरादे से काम करता है केवल पीपी (जो सर्वर को कॉल करता है) को बार-बार –

+1

पर कॉल करता है तो आप कहते हैं कि यह आपके जेएस के साथ एक समस्या है? लेकिन फिर अपने प्रश्न को पूर्ण जेएस कोड के साथ अपडेट करें। जैसा कि मैं लंबे मतदान को समझता हूं: जेएस आपके PHP से पूछताछ करता है जो आपकी webservice से पूछताछ करता है। Webservice आपके कनेक्शन को PHP/अपाचे सर्वर पर खुला रखता है जो उसके ब्राउज़र अनुरोध पर अपना कनेक्शन खुला रखता है। तो एकमात्र कारण यह है कि इसकी कॉलिंग (तेज़) बार-बार होती है, कि इस श्रृंखला में कोई भी अपना कनेक्शन खुला नहीं रखता है। – Inceddy

1

CURLOPT_RETURNTRANSFER के साथ आप अपने URL में की curl_exec($ch)

echo curl_exec($ch);