我有一个带有按钮的网页,当用户点击按钮时,会运行一个很长的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");
调用它,但这也会阻止用户离开页面
我可以做些什么来完成这项工作?
答案 0 :(得分:0)
可能的问题是script.php
正在打开一个会话,而您尝试访问的任何一个页面也在尝试打开一个会话,但必须等到script.php
全部设置完毕。
script.php
中的某处,您需要添加:
ignore_user_abort(1); // Let the script run even if user leaves the page
set_time_limit(0); // Let script run forever
session_write_close(); // Close the session. This will allow for other pages to open it
// You will still be able to read your session data but can no longer write to it unless it is re-opened
sleep(60);