3

パスワードで保護されたフィードがあります。以下は、フィードにアクセスするために使用されるコードです

$url = 'http://thefeedwebsite.com/feed.php';

$data = array("username" => ‘user’, "password" => ‘password’, "location" => "HK")
$ch = curl_init($url);

);

curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 0);


$output = curl_exec($ch);

curl_close($ch);

問題は、約100の結果を出力した後のサイズが大きいため、タイムアウトし続けることです。いくつかのスレッドが示唆しているように、php.ini に時間制限を設定しましたが、それでも同じ問題です。CURL が完全なフィードをメモリにロードするためだと思います。

リーダーを介してフィードをより速く処理できるように、phpに$output直接ロードすることは可能ですか?XMLReader()

申し訳ありませんが、質問はまったく初心者です。xml で php の学習を始めたばかりです。

4

2 に答える 2

2

このスレッドはあなたを助けることができます(cURLのストリーミングとメモリで遊ぶ):

3,000 万文字の長さの文字列を操作する

最初の答えはそれをファイルに保存します。2 つ目は、「流れるように」データをストリーミングすることです。ファイルが非常に大きい場合は、使用する XML パーサーを検討する必要があります。xml 全体をメモリにロードしてオブジェクトを作成するものもあれば、その場で XML を操作できるインターフェイス メソッドを提供するだけのものもあります (XML 全体をメモリにロードする必要はありません)。

于 2013-03-20T18:41:55.820 に答える
0

制限時間 ( http://php.net/manual/en/function.set-time-limit.php ) が問題ではない場合、メモリが不足している可能性があると考えたことはありますか?

http://www.php.net/manual/en/ini.core.php#ini.memory-limit

于 2013-03-20T18:34:41.717 に答える