PHP で入力とボタンが与えられた場合、入力に時間を入力してからボタンを押す必要があります。その時間の後に PHP 関数を実行する必要があります。
どうすればいいですか?
編集:
クライアント側のソリューションは必要ありません。これはサーバー側の問題です。
ユーザーがページを離れると、JavaScript のタイムアウトが終了します。ユーザーがページを離れた後も、そのタイムアウトが生きている必要があります。
私は何も試していません。これを行う方法がわかりません。
PHP で入力とボタンが与えられた場合、入力に時間を入力してからボタンを押す必要があります。その時間の後に PHP 関数を実行する必要があります。
どうすればいいですか?
編集:
クライアント側のソリューションは必要ありません。これはサーバー側の問題です。
ユーザーがページを離れると、JavaScript のタイムアウトが終了します。ユーザーがページを離れた後も、そのタイムアウトが生きている必要があります。
私は何も試していません。これを行う方法がわかりません。
最近、同様のニーズがありました。ただし、これがうまくいくかどうかはわかりません。うまくいくかどうか教えてください。
if (isset($_GET['async'])) {
for( $i = 0 ; $i < 10 ; $i++ )
{
append_log(date('l jS \of F Y h:i:s A') . ': background process.<br />');
sleep(1);
}
exit;
}
header( 'Content-type: text/html; charset=utf-8' );
pseudo_async(array('async' => true)); // this runs this php script in the backbround
echo 'Begin ...<br />';
for( $i = 0 ; $i < 10 ; $i++ )
{
output_buffer('appended to the log <br />');
append_log(date('l jS \of F Y h:i:s A') . ': main process.<br />');
sleep(1);
}
echo 'End ...<br />';
function pseudo_async($query) {
$timeout = array('http' => array('timeout' => 0.01));
$context = stream_context_create($timeout);
@file_get_contents(selfurl() . '?' . http_build_query($query), false, $context);
}
function append_log($msg) {
$file = __DIR__ . '/log.html';
file_put_contents($file, $msg, FILE_APPEND);
}
function selfurl() {
$pageURL = (@$_SERVER["HTTPS"] == "on") ? "https://" : "http://";
if ($_SERVER["SERVER_PORT"] != "80")
$pageURL .= $_SERVER["SERVER_NAME"].":".$_SERVER["SERVER_PORT"].$_SERVER["REQUEST_URI"];
else
$pageURL .= $_SERVER["SERVER_NAME"].$_SERVER["REQUEST_URI"];
return $pageURL;
}
function output_buffer($str) {
echo $str;
flush();
ob_flush();
}
ほとんどの場合、データベース内のデータを操作するため、mysql でイベントを作成することも選択肢の 1 つです。さらに、すべて mysql コードで記述できれば、php と mysql を行き来するよりも高速になります。