2012-01-25 16 views
1

これは簡単な質問ですが、Webで答えが見つかりませんでした。PHPでリクエストを送信しても応答が得られません

私は

http://www.example.com/do_it.php 

を開いていたときに動作しますリモートスクリプトを持って、私はロードに時間がかかりすぎることができ、このページには致命的なエラーを与えることができ引き起こし、それを含めることはできません。

私はそのページをPHPから最も簡単で簡単な方法で読み込む必要があります。今、私は

$ch = curl_init($url); 
curl_setopt($ch,CURLOPT_CONNECTTIMEOUT, 5); 
curl_setopt($ch,CURLOPT_RETURNTRANSFER,$withReturn); 
$execute = curl_exec($ch); 

をやっている。しかし、このスクリプトは、応答を取得し、その結果として、それはヘッダーだけを返すスクリプトよりも時間がかかりますか、いないことは何かを返す

それはそれを行うより良い方法ですか?

do_it.phpが私がそれを呼び出す必要がある場所から同じサーバーにある場合は助けてください。

+0

ご質問が不明です。あなたはすでに実用的なソリューションを持っているようですか? –

+0

はい、動作していますが、パフォーマンスについては心配しています。私は本当に良いソリューションが存在することを願っています。 – Narek

答えて

2

私は要求を実行し、応答を待っていない可能性がある解決策は、php.net/curl_multi_execを使用し、応答の解析を避けることだと思います。もう1つのアプローチは、ソケットを使用すること、スクリプトへの接続を開くこと、要求を書き込んだり応答を準備せずに接続を閉じることです。

例カールスクリプト: https://github.com/vrana/php-async/blob/master/CurlAsync.php

ソケット方式の使用例:上記の例

$fp = fsockopen('example.com', 80, $errno, $errstr, 30); 

$out = "GET /do_it.php HTTP/1.1\r\n"; 
$out.= "Host: example.com\r\n"; 
$out.= "Content-Type: application/x-www-form-urlencoded\r\n"; 
$out.= "Connection: Close\r\n\r\n"; 

fwrite($fp, $out); 
fclose($fp); 

が未検証であり、出発点として提供されます。

+0

お返事ありがとうございます! 'fsockopen'がいかに速く動作するかを確認する必要がありますが、論理的には私が必要とするものです! – Narek

+0

問題ありませんNarekうれしい私は助けることができました! –

1

よくあるのは、すべての方法をチェックすることです。 )fsockopenの()

そして、あなたはちょうどそのget_file_contentsを(使用し、そのdo_it.phpページの応答をダウンロードしたい場合は - curl_exec()

ソケット - そこ

CURLです。

+0

'get_file_contents()'は応答を得るのに最も遅いメソッドですが、私の場合はレスポンスが全く必要ないので、レスポンスを得ようとしないメソッドを探しています。 – Narek

関連する問題