用XHR取消PHP脚本?
在你的帮助下,我已经:用XHR取消PHP脚本?,php,javascript,jquery,ajax,xmlhttprequest,Php,Javascript,Jquery,Ajax,Xmlhttprequest,在你的帮助下,我已经: function send(){ $.get("/site/send.php", function(data){ alert(data); } } 在site/send.php中,我有: for($=0;$i++;$i<1000) sleep(1); } echo "OK"; 在reset.php中: echo "RESET"; window.stop();取消我的XHR,但仍然无法正常工作。我取消了XHR,但仍然必须在函数se
function send(){
$.get("/site/send.php", function(data){
alert(data);
}
}
在site/send.php中,我有:
for($=0;$i++;$i<1000)
sleep(1);
}
echo "OK";
在reset.php中:
echo "RESET";
window.stop();取消我的XHR,但仍然无法正常工作。我取消了XHR,但仍然必须在函数send()中等待睡眠(1000)。这不会返回任何内容,但仍将继续执行。只有当sleep>1000时,才会开始执行/site/reset.php
在本例中,如何取消PHP函数 是否可以签入PHP文件检查XHR是否仍然设置 $("#click").click(function(){ //window.stop(); return false; $(“#单击”)。单击(函数(){ //window.stop(); 返回false;
如果您在php服务器上有root访问权限,如果您在linux上,您可以使用`:
echo `ps -A`;
获取计算机上所有正在运行的进程的列表,然后如果您知道apache用于执行脚本的用户,则可以
echops-u用户
确定正确的PID后,您可以使用以下方法终止它:
echo `kill PID`;
前
或
//我不知道这样做是否有效
eval('echokill'.$\u GET['PID'..
;')
所有这些都是在一个不同的php脚本中执行的,完全是为了在命令中杀死其他脚本
您可以使用AJAX从前面提到的脚本中请求此类作业
您还可以将php文件写入客户机它自己的PID(google的写入函数,它看起来非常像c),然后javascript可以将该PID直接发送到killer脚本,以命令某些脚本停止执行
编辑1:
您可以使用此函数获取正在运行的脚本PID:
getmypid();
您可以将其保存在文件中,或者更好地保存在会话变量中
$_SESSION[__FILE__] = getmypid();
要停止文件运行,可以调用如下页面(killer.php):
虽然这很危险
我不知道要执行的确切命令,也不知道你是否有这种控制,甚至不知道你是否在linux系统上
致以最诚挚的问候,以下任何一项都可能有效:
ignore_user_abort(false);
for($=0;$i++;$i)除非定期检查退出条件,否则无法取消正在运行的php脚本。取消XHR请求没有任何作用。因此,我如何才能正确执行此操作?您为什么还要尝试执行此操作?解释您想要执行的操作,也许您可以找到一种更好的方法来实现此操作。1)让php脚本检查条件(例如,帮助文件的内容),如果1,中止,否则继续运行。2)在按钮上单击向其他php处理程序发送ajax请求,这会将帮助文件的内容设置为1。但在本例中,仍有一个脚本php正在运行,我无法执行新脚本“在本例中,我如何取消php函数?”我怀疑这与用户的要求有任何关系。这只是阻止了点击事件的传播。
$_SESSION[__FILE__] = getmypid();
<?php
// security verifications, etc
/*
*/
session_start();
$f = $_SESSION[$_GET['file']];
echo `kill $f`;
?>
ignore_user_abort(false);
for ($=0;$i++;$i<1000) {
if (connection_aborted()) break;
for ($=0;$i++;$i<1000) {
if (connection_status() != CONNECTION_NORMAL) break;