-
RoadRunner更稳更省资源,尤其适合容器化与长周期运行;Swoole是WebSocket和协程异步任务的唯一选择。因RoadRunner由Go管理Worker、强制max_jobs重启防泄漏、Go层处理TLS/HTTP/2,而Swoole易受扩展兼容性与协程调度异常影响,连接池配置更复杂且预热不彻底。
-
imagejpeg()的参数控制质量(65–80推荐),imagepng()的参数才是压缩级别(0–9,设9可减体积15%–40%);必须先缩放再压缩,GD处理WebP需PHP8.0+且函数存在,大图须防内存溢出并及时imagedestroy()。
-
PHP中json_encode()慢的主因是默认执行冗余检查(编码检测、循环引用、浮点精度等),而非函数本身低效;应预处理数据(转UTF-8、移除资源/闭包)、启用JSON_UNESCAPED_UNICODE等标志、流式输出大数据、开启OPcache并禁用Xdebug。
-
PHP不支持真正多线程,推荐Web场景用Swoole协程实现高并发I/O,CLI批量任务用pcntl_fork()多进程,简单HTTP并发可用curl_multi_init()或amphp。
-
PHP数组过滤推荐使用array_filter()函数,它根据回调函数返回值筛选元素,保留使回调返回true的项,默认保留原键名,可结合array_values()重新索引;若省略回调,则移除被视为false的元素。
-
判断PHP数组元素存在性及定位需依需求选函数:一、in_array()判存在,返回布尔值;二、array_search()返首个键名;三、array_keys()返所有匹配键;四、foreach手动遍历支持自定义逻辑;五、array_filter()提取匹配子数组。
-
PHP密码存储必须用password_hash(),禁用md5/sha1;真加密用openssl_encrypt()(如AES-256-CBC),禁用ECB模式;base64_encode()仅为编码,无保密性。
-
phpenv是纯命令行工具,无GUI、不打包Web服务器,安装仅三步:gitclone、配置shell文件、source重载;其核心机制依赖shim拦截,失效时应检查whichphp路径和phpenvinit是否生效。
-
PHPEnv下延长session有效期需同步配置PHP-FPM的php_admin_value、确认存储后端(文件需可写且磁盘充足,Redis需设expire参数)、并重启对应FPM服务,仅改php.ini无效。
-
str_shuffle()仅适用于ASCII字符串,UTF-8多字节字符需用preg_match_all('/./u')拆分后shuffle()再implode();需可重现结果时须手动设随机种子,且注意保留原始空白与不可见字符。
-
启用strict_types=1可禁止函数参数和返回值的隐式类型转换,仅对当前文件直接定义调用的函数生效,需置于文件首行(前仅允许空白和注释)。
-
PHP7.4并未弃用三元运算符的左结合性,而是弃用不加括号嵌套三元的警告抑制;PHP8.0+直接报错,因其按左结合解析为($a?$b:$c)?$d:$e,而非直觉的$a?$b:($c?$d:$e)。
-
SublimeText3调试PHP必须用Debugger插件配合Xdebug3.x,需确保xdebug.mode=debug、端口9003开放、pathMappings正确、浏览器启用XdebugHelper且带调试参数,Sublime须从终端启动以加载正确php.ini。
-
Xdebug3的xdebug.output_dir必须手动创建且确保PHP进程有写权限,否则trace/profile文件静默失败;它不自动创建路径,也不验证权限,常见于目录不存在、属主不符、SELinux/AppArmor拦截或子配置覆盖等情况。
-
array_fill()用于创建指定长度并填充固定值的数组,支持负数起始索引,键为整型递增,可结合range或array_map模拟范围数组,常用于初始化配置、预分配空间及与array_combine构建关联数组。