用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用于执行脚本的用户,则可以 echo
ps-u用户

确定正确的PID后,您可以使用以下方法终止它:

echo `kill PID`;

//我不知道这样做是否有效 eval('echo
kill'.$\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;