2020 年了,现在最简单的 PHP 执行异步任务的方式是什么,不要框架,尽量十几二十行 PHP 代码能搞定?
想在这台服务器(国内)php 保存某些数据后,去更新另外一台服务器(国外)的文件缓存,如果是同步更新,保存数据的响应结果会太慢太卡,想着异步去做。要求尽量简单,不想左一个框架右一个框架,不用 redis,memkache 等,因为开启这些扩展需要编译 php,麻烦
想在这台服务器(国内)php 保存某些数据后,去更新另外一台服务器(国外)的文件缓存,如果是同步更新,保存数据的响应结果会太慢太卡,想着异步去做。要求尽量简单,不想左一个框架右一个框架,不用 redis,memkache 等,因为开启这些扩展需要编译 php,麻烦
然后你就开浏览器让他不断自动执行就行。
https://stackoverflow.com/questions/15273570/continue-processing-php-after-sending-http-response
set_time_limit(30);
ignore_user_abort(false);
header(“Content-Length: 0”);
header(“Connection: Close”);
echo str_pad(”, ini_get(‘output_buffering’));
ob_end_flush();
ob_flush();
flush();
//耗时任务
sleep(10);
file_put_contents(‘test.log’, date(‘Y-m-d H:i:s’), FILE_APPEND);
“`
“`php
<?php
$curl = curl_init();
curl_setopt($curl, CURLOPT_URL, ‘http://127.0.0.1/async.php’);
curl_setopt($curl, CURLOPT_HEADER, 0);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
curl_exec($curl);
curl_close($curl);
echo ‘结束了’;
“`
有局限性,最好还是用队列吧
也许可以试一下, 消费者和生产者连接同一个服务, 生产者投递任务即时响应返回, 消费者在另一个服务器收到任务对它进行处理
同步文件可以用 scp 之类的命令. 个人不精的建议. 也就 docker 运行个 Rabbitmq, 其他还真是几行代码