-
Laravel中为API异步任务精确指定队列有五种方法:一、dispatch()链式调用onQueue();二、任务类中设置$queue属性;三、使用dispatchOn()指定队列与连接;四、viaQueue()动态选择队列;五、Bus::dispatchToQueue()直接推入指定队列。
-
phpEnv是Windows下绿色免安装的PHP集成环境,仅默认集成Apache,虽含Nginx文件但不自动启用;需手动测试配置、管理员权限启动并正确设置ssl参数和防火墙规则才能运行HTTPS。
-
必须用FROM...ASbuilder分离Composer安装与运行环境,否则vendor/会混入dev依赖、测试文件、.git目录和未优化autoloader,导致镜像体积多出50–200MB;传统单阶段构建易因未加--no-dev/--optimize-autoloader、选用胖基础镜像及COPY路径错误而膨胀至400MB+。
-
在PHP单元测试中使用Hamcrest时,可通过hasKeyValuePair()匹配器精准断言目标数组是否包含指定的键值对,而无需关心其他无关键值,简洁高效且语义明确。
-
PHP8.4并未引入联合类型,该特性自PHP8.0起已支持,语法为|,用于参数、返回值、属性(8.0+)和变量(8.2+),表示值属于多个类型之一,如string|int。
-
VirtualHost配置必须三者对齐:域名、路径、端口;需启用httpd-vhosts.conf、正确设置DocumentRoot与ServerName、修改hosts映射127.0.0.1,缺一将导致403/404或请求错配。
-
PHP和JavaScript时区需显式统一:PHP用date_default_timezone_set('Asia/Shanghai'),JS依赖后端传ISO8601带时区时间;全链路应以UTC存储传输,仅展示层转换。
-
正确做法是用where闭包包裹所有orWhere条件,否则因SQL中OR优先级低于AND,会导致非模糊条件(如status)仅作用于首个字段而漏数据;多关键词需分词后为每个词构建独立OR组,并用filled()校验空值、paginate放最后、关联字段加索引。
-
CodeIgniter3的$this->dbutil->backup()返回SQL字符串而非文件路径,需手动写入磁盘;默认不压缩、无时间戳、不支持增量,大库易超时,须设set_time_limit(0)和内存限制,并确保数据库权限与连接正常。
-
宝塔面板下ThinkPHP6出现404,根本原因是伪静态未正确配置:需在server块中location~.php$之前添加含/public/index.php的rewrite规则,运行目录设为/public,并确保fastcgi_paramPATH_INFO透传。
-
PHP中BFS需用队列按层访问节点:一、数组模拟队列适合小图;二、SplQueue性能更优;三、封装为带回调的通用函数;四、多源BFS处理非连通图,遍历所有未访问节点。
-
Redis启动失败时若日志出现“Addressalreadyinuse”,必为端口冲突,需用netstat或lsof查PID并终止占用进程;bind配置错误、宝塔未重载配置、权限不足等也常见。
-
需手动修改phpEnv的Nginx站点vhost配置,添加auth_basic指令并用htpasswd生成密码文件,路径须确保Nginx进程可读,配置后需nginx-t测试并reload生效。
-
首先确认PHP版本不低于8.1并启用必要扩展,接着安装Composer,使用composercreate-project创建Laravel项目,配置Nginx指向public目录并设置重写规则,最后设置storage和bootstrap/cache权限,复制.env文件并生成应用密钥。
-
PHP多维数组扁平化有五种方法:一、array_walk_recursive函数跳过键名仅处理值;二、自定义递归函数flatten_array支持键名拼接与类型判断;三、SplRecursiveIterator面向对象遍历,可访问键名与值;四、array_merge与call_user_func_array组合逐层展开;五、引用传递flatten_by_reference减少内存开销。