5
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

default_socket_timeoutを一時的に変更したい

Posted at

忘れないようにメモ。

APIでレスポンスが返却されず処理が落ちてしまう事象があった。

PHP.iniの全体での変更ではなく、
API通信の処理だけdefault_socket_timeoutを変更したい。


ini_set('default_socket_timeout',20); //20秒

これでできるっぽいけどテストしたい。

MacにPHPインストールしてると以下のコマンドでPHPのビルトインウェブサーバーが起動する。
$ php -S localhost:3000

コマンド実行時のカレントディレクトリがルートディレクトリになるので、
直下に適当なPHPファイルを置く。


<?php
echo date('h:i:s') . "\n";

// 10 秒間遅延させる
sleep(10);

// 再開!
echo date('h:i:s') . "\n";
?>

ここに開発中のコンテナからアクセスして実際にdefault_socket_timeoutが変更となるか確認する。

開発中のコンテナに以下のテスト用コードを置く。
起動中のコンテナから見てMacのローカルはdocker.for.mac.localhostでアクセスできる。

$url = 'http://docker.for.mac.localhost:3000/info.php';

// POST送信するデータ
$data = array(
    'data' => 'postdata',
);

// URL エンコード
$data = http_build_query($data, "", "&");

// 送信時のオプション
$options = array('http' => array(
    'method' => 'POST',
    'content' => $data,
));

// ストリームコンテキストを作成
$options = stream_context_create($options);

// file_get_contents
$contents = file_get_contents($url, false, $options);

タイムアウト値の方が少ないと$contentがFalseになるし、逆だと$contentsに値が返る。

5
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?