【PHP】PHPの処理を中断させない「ignore_user_abort」

PHPの処理がブラウザの接続が切断されても中断されないようにするメモ。


ignore_user_abort

ignore_user_abortを使用すれば「PHPの処理がブラウザの接続が切断されても中断されないよう」に出来ます。

通常PHPの場合はブラウザが閉じたりすると処理が中断して完了することが出来ません。

ただ、処理によっては中断されたら困る処理があります。

例えば決済処理が通っているのに商品の購入が未購入で処理が中断されたら大変なことになります。


使用方法

使用方法は3パターン存在します。


プログラム

基本のプログラムでの設定方法

<?php
ignore_user_abort(1);

php.ini

php.iniの設定方法

PHP: 実行時設定 - Manual

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 件のコメント :

コメントを投稿