日記帳
本ページはプロモーションが含まれています
カテゴリー
Links
blog(ブログ)マスター
アンドロイドの巣
ゼロから始めるベランダ菜園
タイトル
2024年11月
1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30

file_get_contents関数でタイムアウトが効かない

カテゴリー: ぷろぐらみんぐ
2016-08-28
file_get_contents関数でタイムアウトが効かない

「効かない」でなくて、使う人が仕様を勘違いしているだけです。

関数 timeoutの概念 説明
file_get_contents パケットタイムアウト
スレッド実行時間ではない
パケット通信時間がタイムアウト時間を超えた場合に限り、処理を中断する。
接続が正常なら読み込み終わるまで処理を続ける。
標準関数
curl_exe CURLOPT_TIMEOUT cURL 関数の実行にかけられる時間の最大値。
関数のスレッドの実行時間
タイムアウト時間が経過しても終わっていない場合は、処理を中断する
標準モジュール
curl
CURLOPT_CONNECTTIMEOUT 接続の試行を待ち続ける秒数。0 は永遠に待ち続けることを意味します。
http_get 関数のスレッドの実行時間 タイムアウト時間が経過しても終わっていない場合は、処理を中断する peclモジュール
http  1.x

webスクリプトから サイズのわからない または、得体のしれないサイトへ接続を要求するときは、
file_get_contentsは使ってはだめってことです。



if (!function_exists('http_get') && function_exists('curl_init'))
{
    function http_get($url , $options = array())
    {
        $crl = curl_init();
        curl_setopt ($crl, CURLOPT_URL, $url);
        curl_setopt ($crl, CURLOPT_RETURNTRANSFER, 1);
        if (isset($options['timeout']) && intval($options['timeout']) > 0) {
            curl_setopt ($crl, CURLOPT_TIMEOUT, intval($options['timeout']));
curl_setopt ($crl, CURLOPT_CONNECTTIMEOUT, intval($options['timeout']));
} $ret = curl_exec($crl); curl_close($crl); return $ret; } }

(例)
$res = http_get($url, array('timeout'=>3);

ブログ内 関連記事: file_get_contents関数でタイムアウトが効かない

 関連記事はありません。

ブログ内 関連記事: file_get_contents関数でタイムアウトが効かない

 関連記事はありません。
PR

[PR]