php - 如何使用 AJAX 在 PHP、MySQL 中启动进程,然后停止

标签 php jquery mysql ajax

我想向服务器发送 AJAX 调用,该服务器向我们的客户调用电话。但是,我不希望启动该过程的人必须保持浏览器打开。经过一些研究,我发现我可以正常地在 php 中传递一个 header ,以允许浏览器在不停止 php 执行的情况下断开连接。这也适用于 AJAX 吗?相关代码如下。

//jQuery 1.8.10
$('#start').click(function(){
    $.post('/startcalling', {
        'time_limit': 0
    });
});
$('#stop').click(function(){
    $.post('/stopcalling');
});

重要的 PHP

function startCalling(){
    echo "starting...";
    header('Connection: close');
    while(getFlagStatus()){
        makeNextCall();
    }
}
function stopCalling(){
    if(!getFlagStatus()){
        $query = "UPDATE cc_flags SET cc_on = 0";
        mysql_query($query);
    }
}

我可以将其打包到 CLI 命令中,并实现我的目标,但我觉得必须有一种更简单的方法。如果我感到困惑,请告诉我,我会进行编辑。

编辑:Does php execution stop after a user leaves the page? 这适用于此吗?

最佳答案

我看起来你想要 ignore_user_abort($bool) 的行为。但仅此一点对您没有多大帮助,因为 PHP 通常有 30 秒的时间限制。 set_time_limit($seconds)可能会帮助你。

请记住,该脚本将在您的网络服务器上运行,如果用户犯了错误,将无法终止该脚本,因此不要忘记添加额外的检查,以便您的用户不会生成该脚本10 次并让它运行,尤其是在打电话时!

我建议制作一个在 Web 服务器外部运行的服务器脚本,以便您可以与守护进程通信并启动/停止其上的作业。使用简单的套接字很容易做到这一点。

关于php - 如何使用 AJAX 在 PHP、MySQL 中启动进程,然后停止,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17176008/

相关文章:

php - 在 php 中传递文本并获取 .0。在sql中

javascript - 弹窗卸载问题

php - Yii2 - 在 GridView 中按一对多对一关系排序和过滤

php - 与 $_POST 混淆

mysql - MySql中两个表的数据计数总和

php - 如何保护 fosuserbundle 中 Symfony 项目的 URL?

php - 如何使用 filter_var_array 过滤日期

php - Laravel 样式表和 javascript 不会为非基础路由加载

JQuery 动画在第一次点击时不起作用

javascript - 同一选择器上的多个 Html 方法