Php 使用忽略用户中止并设置时间限制(0)
我在page1.php中有一个表单,它会重定向到page3.php,也会在page2.php中触发一个ajax帖子,但没有成功函数,page2.php可能需要运行一个小时,但用户不需要结果。我确实需要用户查看page2.php,但他可能会离开 我需要在page2.php中使用这两个函数吗?或者只是其中一个?还是没有?我想确保page2.php中的脚本一直运行到最后 Page1.phpPhp 使用忽略用户中止并设置时间限制(0),php,ajax,Php,Ajax,我在page1.php中有一个表单,它会重定向到page3.php,也会在page2.php中触发一个ajax帖子,但没有成功函数,page2.php可能需要运行一个小时,但用户不需要结果。我确实需要用户查看page2.php,但他可能会离开 我需要在page2.php中使用这两个函数吗?或者只是其中一个?还是没有?我想确保page2.php中的脚本一直运行到最后 Page1.php <form id="form" action="page2.php" method="post"&
<form id="form" action="page2.php" method="post">
<!--form input elements with names-->
</form>
<script>
$('#form').submit(function() {
$.post('page3.php', {
var1: $('input[name="name1"]').val(),
var2: $('input[name="name2"]').val(),
});
});
</script>
Page2.php
<?php
ignore_user_abort(true); // Allow user to navigate away
set_time_limit(0); // Allow script to run indefinitely
// a lot of code which will run for a while - between 3 minutes and an hour
?>
Page3.php
<html>
<!--some code here including links to go to page4.php-->
</html>
我之所以问这个问题,部分原因是我认为这些函数都没有必要,但我被告知要使用它们,但当我尝试使用它们时,即使它们已经失效;脚本停止了,它似乎仍然在处理一些东西,我担心由于这个原因,它在服务器上可能会太多。
因为我不想添加不必要的加载。是的,为了达到当前的标准,您需要这两个函数,我的建议是将其移出http协议。如果脚本不需要客户端进一步交互,那么最好在命令行中使用,这取决于脚本实际完成的任务 一种使用理论是创建一个cron脚本,在需要的时间间隔调用它,然后它将访问page2.php将填充的队列 如果有可用的队列,cron脚本将按照当前在page2.php上所做的方式处理信息。由于您的脚本运行了很长一段时间,我建议对cron使用锁定机制,请参阅php.net/flock了解简单的文件系统锁定。如果文件已锁定,则检查该文件是否已运行 下面是一个简单的示例,您可以将其放入独立脚本中,以便通过cron进行处理:
$fp = fopen(DATA_PATH . '/locks/isLocked', 'w+');
if (!flock($fp, LOCK_EX | LOCK_NB)) { //locks the file
$logger->info('Already Running');
exit(0);
}
fwrite($fp, time()); //write our new time so we can inspect when it ran last if needed
try {
if (hasQueue()) { //checks to see if any jobs are waiting in mysql
run(); //process normally completed by page2.php
}
} catch (Exception $e) {
//something went wrong here could setup a log / email yourself etc..
}
flock($fp, LOCK_UN); //unlock the file
哦,哇,这对我来说都是非常新的,你能告诉我一些链接/文档吗?更新了简单的文件锁定示例,介绍了如何通过cron和mysql使用设置php脚本。最好检查您各自控制面板的文档以及使用mysql的php.net/mysql