深入理解 PHP 写时复制机制
一个例子:
<?php
$foo = 1;
$bar = $foo;
echo $foo + $bar;
变量 $foo 赋值给变量 $bar,这两个变量具有相同的值,没有必要新申请内存空间,他们可以共享同一块内存。在很多场景下 PHP 的 COW 对内存进行优化。比如:变量的多次赋值、函数参数传递,并在函数体内修改实参等。
Laravel 队列任务重复执行问题
在使用 Laravel Redis 队列时,发现一个任务被多次执行,这是为什么呢?
原因:Laravel 中如果一个队列任务执行时间大于 60 秒,就会被认为执行失败并重新加入队列,这样就会导致重复执行。
软件设计:先整体后细节
《黑客与画家》(Hackers and Painters)一书作者保罗·格雷厄姆(Paul Graham)提出了一个重要观点:如果一开始就纠结细节而看不到整体,往往花费大量时间却达不到预期效果。正确的做法是先有一个整体的轮廓,再逐步完善各个部分。
Laravel 队列实践指南
使用 Laravel 消息队列处理异步任务,Redis 作为队列驱动,Supervisor 监控进程异常中断并自动重启,这是 Laravel 处理队列任务的标准配置。但在生产环境中,为了保证系统可靠性,还需要注意以下几点。