5

ということで、URLからcurlでxmlファイルを取得してみます。つまり、ファイルはスクリプトを介してオンデマンドで生成されます。これには最大 80 ~ 100 秒かかるため、タイムアウト エラーでカールが落ちます。

URL は次のようになります。

https://domain/mancgi/report?params&out=xml

CURLOPT_TIMEOUTとを設定しようとしましたが、スクリプト自体CURLOPT_CONNECTTIMEOUTset_time_limit()(正常に動作します)、何も変更されていません - まだタイムアウトしています。

カール コードは次のようになります。

set_time_limit(1000);
$curl = curl_init($url);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, FALSE); 
curl_setopt($curl, CURLOPT_CONNECTTIMEOUT, 0); 
curl_setopt($curl, CURLOPT_TIMEOUT, 300); 
$xml = curl_exec($curl);

誰にもアイデアはありますか?

4

2 に答える 2

1

デフォルトで60秒であるphp.iniのdefault_socket_timeoutに達している可能性があると思います。

変更してみて、動作するかどうかを確認してください。そうでない場合は、代わりにこれを試してください。

$xml = file_get_contents($url);

これを行うと、ここで読むことができるラッパーが使用されます: http://php.net/manual/en/wrappers.php

また、file_get_contents で使用するために必要なラッパーが php.ini で有効になっていることを確認する必要があります (通常は有効になっているため、問題ありませんが、念のために確認してください)。

それを使用すると、タイムアウトがCURLによって強制されている場合に発生しているタイムアウトをバイパスする可能性があり、php.ini FROM 60 SECONDSのdefault_socket_timeoutを、問題であると思われる別のものに調整することを忘れないでください

確認する INI 設定

http://php.net/manual/en/filesystem.configuration.php

于 2012-11-28T16:00:59.700 に答える
0

URL は GET リクエストですか? もしそうなら試してみてください

$xml = get_file_content($url);
于 2012-11-28T15:27:27.480 に答える