私はボタン付きのWebページを持っています。ユーザーがボタンをタップすると、実行する長いPHPスクリプト(ユーザーが購入した過去のトークンを見てみましょう)があり、スクリプトの終わり。phpスクリプトを非同期で実行する
私は共有目的のために私のコードを抽象化しました(スクリプトをただのスリープ機能で置き換える)。
webpage.php
<div class="card">
<input type="submit" class="button" name="update" value="Update" />
</div>
<script type = "text/javascript" src="jquery_functions.js"></script>
jquery_functions.js
$(document).ready(function(){
$('input[name="update"]').click(function() {
$.post(
"script.php",
{update:"fav_tokens"},
function($data) {
alert ($data.message);
},
"json"
);
});
});
script.php
<?php
sleep(60);
?>
問題ですユーザーがボタンを押すと、彼はページに「ロックイン」され、そこからナビゲートすることはできません。これは、jQuery AJAXのことを行う目的を打ち消すものです。
私は別のファイル(script2.php)でスクリプトを入れてみましたし、その後script.phpにexec("php -f script2.php");
を使用してそれを呼び出すが、それはまた、ページから離れて移動するからユーザーを停止しています。
この作業を行うにはどうすればよいですか?
ボタンなどの入力タイプを作るか、またはフォームはformタグとJSの機能を使用して、デフォルトを防ぐ作ります。あなたの入力タイプボタンをタイプサブミットから作成するだけです。 – webDev
「彼はページに「ロックされていて、そこから遠ざけることはできません」と説明できますか? PHPサーバが他のリクエストに対して応答しなくなることを意味しますか? –
コンポーザから[Symphone event dispacher](http://symfony.com/doc/current/components/event_dispatcher.html)パッケージを使用することができます。タスクがバックグラウンドで実行され、すぐに「私たちはあなたのリクエストを処理しています」というような素敵なメッセージを返します。 – AfikDeri