myhyperion

2603 经验值

主要问题是想测试代码的运行速度。目前用了ubench,但是很简陋只能测试一个起始点一个终止点。以前用codeigniter 的时候可以用

$this->benchmark->mark('a');
// some code
$this->benchmark->mark('aa');
echo $this->benchmark->elapsed_time('a', 'aa');

这样,laravel里似乎没有相似工具

array_reduce的第三个参数默认是NULL,所以视频里的[] 没必要传递过去吧?试了一下不传递那个空数组返回的结果也是一致的

我设置timeout为5, retry-after为7, 代码里直接sleep(10)

居然顺利执行完了

为什么会这样?不是应该5s后超时关闭,或者5s后再次扔到队列吗?

ps:文档说明如下:
任务过期 & 超时#
任务过期#

config/queue.php 配置文件里,每一个队列连接都定义了一个 retry_after 选项。这个选项指定了任务最多处理多少秒后就被当做失败重试了。比如说,如果这个选项设置为 90,那么当这个任务持续执行了 90 秒而没有被删除,那么它将被释放回队列。通常情况下,你应该把 retry_after 设置为最长耗时的任务所对应的时间。

唯一没有 retry_after 选项的连接是 Amazon SQS。当用 Amazon SQS 时,你必须通过 Amazon 命令行来配置这个重试阈值。

队列处理器超时#

queue:work Artisan 命令对外有一个 --timeout 选项。这个选项指定了 Laravel 队列处理器最多执行多长时间后就应该被关闭掉。有时候一个队列的子进程会因为很多原因僵死,比如一个外部的 HTTP 请求没有响应。这个 --timeout 选项会移除超出指定事件限制的僵死进程。

php artisan queue:work --timeout=60
retry_after 配置选项和 --timeout 命令行选项是不一样的,但是可以同时工作来保证任务不会丢失并且不会重复执行。

--timeout 应该永远都要比 retry_after 短至少几秒钟的时间。这样就能保证任务进程总能在失败重试前就被杀死了。如果你的 --timeout 选项大于 retry_after 配置选项,你的任务可能被执行两次。

如果不分离,很容易用request 进行验证,并且错误的话信息都在Session里存着,方便使用。

但是现在分离了,直接用Request返回的数据不符合要求,Session又不能用。如果用Validate的话,不同的表单条件不能复用,sometimes 这样的修饰符也不能用了。而且还是要写一大堆if..else... 感觉很不爽

前后端分离的情况下用passport验证登录信息吗?还是别的什么比较好?

如果是几百个回答呢?这种with的分页还没介绍吧

你这好像是没有传参数 complete 的参数

貌似同样错误。难道哪儿有中间件在起作用?

已找到原因了。更新时用要 resource.update 而不是 save. 多看文档啊