如何在连接结束后让 PHP 运行 一些脚本

How to let PHP run some script after the connection end

这是我的系统流程:

                Form
User Input  ───────────►    Encrypt Library Scripts
                                           │
                                           │
Result     ◄─────────   Add DB    ◄────────┤

但是,脚本文件已加密并且缺少某些内容。 另外我想添加有关此功能的日志。

所以我正在写这样的代码:

前端

$("#form").submit(function(e) {
     e.preventDefault();
     
     // Call API Here

     this.submit();
});

// Step 1: API to Save the User Input and timestamp to the log table

// Step 2: Cron job to Query the latest result of that user, and update the table id to the Step 1 log 


但是好像太复杂了,需要管理cron作业。

所以我想写这样的东西

API

$data = $_POST['inputA']; 
...
..

// Step 1: Return the response to frontend first (Finish AJAX)
// Step 2: Wait 10s for the library adding result
// Step 3: Query the latest id, and add with the $_POST data from frontend

// Will Handle if the latest result not in 10s, assume add data failed , no need to retry

php可以吗?

您可以将所有响应数据刷新到客户端

fastcgi_finish_request();
sleep(10);
// do your task 

或者更好的方法是使用queques https://laravel.com/docs/8.x/queues