如何在连接结束后让 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
这是我的系统流程:
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