Linux上执行php start.php status会重置http请求吗?

lepig

问题描述

标题里说的'重置'可能不准备。下面是我的问题

当我在代码里使用sleep()这个函数,然后使用php start.php status命令查看进程时,http响应会立刻返回,是什么情况呢?

我本意是,写一个接口,故意10s后返回结果。然后我想看看我在客户端多次(比如3次)请求后是每个都是10s返回响应,还是一共得30s以后才返回全部响应。
在3次请求期间,我执行php start.php status导致结果立马被返回了。

程序代码

public function index(Request $request)
{
sleep(10);
return json(['code'=>0, 'msg'=>'OKKKKKKKKKKKKKKKKKKKKKKKKK']);
}

报错信息

<video src="https://s3.keer.me/2024/10/6721d5e922a47.mp4"></video>

操作系统及workerman/webman等框架组件具体版本

Workerman version:4.1.15 PHP version:8.2.14
start time:2024-10-29 17:08:09 run 0 days 21 hours
load average: 0.01, 0.09, 0.06 event-loop:\Workerman\Events\Select
2 workers 5 processes

116 1 0
1个回答

Tinywan

不要使用exit die sleep语句

业务执行exit die语句会导致进程退出,并显示WORKER EXIT UNEXPECTED错误。当然,进程退出了会立刻重启一个新的进程继续服务。如果需要返回,可以调用return。sleep语句会让进程睡眠,睡眠过程中不会执行任何业务,框架也会停止运行,会导致该进程的所有客户端请求都无法处理。

https://www.workerman.net/doc/workerman/must-read.html

建议你还是多看看官方文档

  • lepig 3天前

    感谢大佬提醒。 exit和die这2个我刚学框架的时候也注意看了,sleep确实没注意看到。 但这玩意确实10s后还是返回了,不太清楚具体逻辑。

×
🔝