首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >通过Ajax发送帖子以在后台运行PHP脚本

通过Ajax发送帖子以在后台运行PHP脚本
EN

Stack Overflow用户
提问于 2019-01-15 12:33:28
回答 2查看 599关注 0票数 1

我的目标是在Ajax中创建一个函数,将post数据发送到不同服务器上的PHP脚本。预期的结果是使PHP脚本从客户机断开连接,并在服务器的后台运行整个PHP脚本,从而允许用户自由导航,而不是让他们等待PHP脚本完成。我已经成功地将数据发送到PHP脚本,但是在断开与客户端的连接后,我无法让PHP脚本继续运行。我不想或需要的PHP脚本输出任何东西到任何其他脚本。我只需要它在后台运行。

我尝试过在PHP中使用ignore_user_abort(true)header("Connection: close\r\n")和其他连接处理,但都没有成功。这是我实现所需功能的最新尝试。

发送脚本

代码语言:javascript
复制
<script>
    function sendingRequest()
    {
        var form = document.getElementById("submit_change");
        var var1 = document.getElementById('var1').value;
        var var2 = document.getElementById('var2').value;
        var var3 = document.getElementById('var3').value;
        var dataString = 'var1='+ var1 + '&var2=' + var2 + '&var3=' + var3;
        $.ajax({
            type:"post",
            url:"recievingScript.php",
            data:dataString,
            cache:false
        });
        form.submit();
        return false;
    }
</script>

PHP脚本

代码语言:javascript
复制
<?php
ignore_user_abort(true);
//includes, uses, requires, establish db connection
$var1 = $_POST['var1'];
$var2 = $_POST['var2'];
$var3 = $_POST['var3'];

header("Access-Control-Allow-Origin: *");
header("Connection: close");

//Code to be run

//end script
?>

成功:在Ajax post中,PHP脚本成功运行,并向调用PHP脚本的脚本发送一条成功消息。但是该脚本大约需要10秒才能运行,因此让用户等待脚本完成并不是一个好主意。任何建议都很感谢,谢谢!

EN

Stack Overflow用户

发布于 2019-01-15 15:06:25

您可以设置所谓的后台工作程序。执行的函数将在“后台”完成,这意味着用户不必等到函数完全完成。然后,您可以公开一个路由/ Api来调用该函数。在laravel中,他们称其为可以排队的作业。

就我个人而言,除了开箱即用的Laravel之外,我没有任何设置后台工作人员的经验。但是你可以检查这些参考资料!

Class Worker PHP

doBackground PHP

Laravel Queues

票数 1
EN
查看全部 2 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54192732

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档