Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/257.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/454.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/.htaccess/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
用ajax停止PHP_Php_Javascript_Html_Ajax - Fatal编程技术网

用ajax停止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调用创建的新实例,事实上我无法处理它,因为记录的不

我有一个JavaScript函数,它通过AJAX调用PHP函数。 PHP函数有一个
设置时间限制(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可以非常轻松地完成这类工作


为什么需要此功能?也许有更好的方法来实现你的最终目标。那么,就像你想做一个守护进程一样?你的函数到底在做什么,它需要无限的时间限制?它总是在“听”吗?它是在查询数据库吗?比如说,它可能在循环中重复,需要时必须停止。你能告诉我在哪里可以找到你的1e2想法的例子吗?