PHPの処理がブラウザの接続が切断されても中断されないようにするメモ。
ignore_user_abort
ignore_user_abortを使用すれば「PHPの処理がブラウザの接続が切断されても中断されないよう」に出来ます。
通常PHPの場合はブラウザが閉じたりすると処理が中断して完了することが出来ません。
ただ、処理によっては中断されたら困る処理があります。
例えば決済処理が通っているのに商品の購入が未購入で処理が中断されたら大変なことになります。
使用方法
使用方法は3パターン存在します。
プログラム
基本のプログラムでの設定方法
<?php ignore_user_abort(1);
php.ini
php.iniの設定方法
ignore_user_abort "1"
もしくは下記
ignore_user_abort On
.htaccessの設定方法
htaccessの設定方法
php_value ignore_user_abort "1"
もしくは下記
php_value ignore_user_abort On
注意点
使用上に辺り注意点は2点あります。
1つは切断しても継続して処理を行うので実行時間(set_time_limit)を設定してください。
そうしないと切断されても無限ループや長大な処理がバックグランドで実行され続けることになります。
2つは切断のチェックが単純にわかりづらい点です。
注意にも記載されていますが明示的に「flash()」を使用してブラウザとの接続を確認しないと正確なチェックが出来ません。
※ただし、切断しても実行って点だけならチェックは不要です。
まとめ
ブラウザが切断されたら困る処理の個所には入れておきましょう!
テストにブラウザの切断や細かなタイミングでの切断チェックは難しいので入れておいて損はないはずです。
0 件のコメント :
コメントを投稿