用ajax停止PHP
我有一个JavaScript函数,它通过AJAX调用PHP函数。 PHP函数有一个用ajax停止PHP,php,javascript,html,ajax,Php,Javascript,Html,Ajax,我有一个JavaScript函数,它通过AJAX调用PHP函数。 PHP函数有一个设置时间限制(0)。 有什么方法可以在需要时停止该函数,例如使用HTML按钮事件 我想更好地解释一下情况: 我有一个php文件,它使用stream\u copy\u to\u stream($src,$dest)php函数在本地网络中检索流。函数必须一直工作到我想要的时候:我可以在流的末尾或我想要的时候停止它。所以我可以用一个按钮启动,一个按钮停止。问题是ajax调用创建的新实例,事实上我无法处理它,因为记录的不
设置时间限制(0)
。
有什么方法可以在需要时停止该函数,例如使用HTML按钮事件
我想更好地解释一下情况:
我有一个php文件,它使用stream\u copy\u to\u stream($src,$dest)php函数在本地网络中检索流。函数必须一直工作到我想要的时候:我可以在流的末尾或我想要的时候停止它。所以我可以用一个按钮启动,一个按钮停止。问题是ajax调用创建的新实例,事实上我无法处理它,因为记录的不是函数,而是另一个实例。我试过米雷斯维克的建议,但没用 取决于功能。如果每次都是while循环检查特定条件,则可以添加可从脚本外部修改的条件(例如,使其检查文件,并根据需要创建/删除该文件) 然而,这看起来是个坏主意。你为什么要这么做
var running = true;
function doSomething(){
//do something........
}
setInterval(function(){if(running){doSomething()}},2000); ///this runs do something every 2 seconds
在按钮上单击简单设置running=false
您的代码看起来像:
set_time_limit(0);
while(true==true){//infinite loop
doSomething(); //your code
}
让我们升级它
set_time_limit(0);
session_start();
$_SESSION['do_a_loop'] = true;
function should_i_stop_loop(){
@session_start();
if( $_SESSION['do_a_loop'] == false ) {
//let's stop a loop
exit();
}
session_write_close();
}
while(true==true){
doSomething();
should_i_stop_loop(); //your new function
}
创建新文件stopit.php
session_start();
$_SESSION['do_a_loop'] = false;
现在需要做的就是在stopit.php文件上创建一个请求(使用ajax或其他工具)
根据您的需要编辑代码,这是重点。众多解决方案之一
对不起,我的英语很遗憾,这是不可能的(某种程度上)
每次对PHP脚本进行AJAX调用时,脚本都会生成一个新的自身实例。因此,您发送给它的任何内容都将被发送到一个新操作,而不是之前启动的操作
有许多变通办法
- 在AJAX中使用readystate 3创建到PHP脚本的非关闭连接,但是这不受跨浏览器支持,在IE中可能无法工作(不确定IE 10)
- 看看PHP中的套接字编程,它允许您使用一个实例创建脚本,您可以多次连接到该实例
- 让PHP检查第三方。例如,让一个脚本在循环中运行,检查文件或数据库,然后连接到另一个脚本以修改该文件或数据库。原始脚本可以通过写入文件/数据库的内容进行远程控制
- 尝试另一种编程语言(这是一个愚蠢的选择,但我是node的粉丝)。Node.js可以非常轻松地完成这类工作