-
快速定位内存泄漏需用memory_get_usage(true)和memory_get_peak_usage(true)打点监测,避免array_merge复制、foreach值拷贝、PDO全量加载;大文件/数据应流式处理、分页查询、直接写磁盘;unset与gc_collect_cycles()配合可延缓OOM,__destruct和gc_disable()基本无效;CLI设memory_limit=-1不安全,须设合理上限并拆分子进程。
-
__call和__callStatic需严格满足触发条件与签名规范才能生效,常见失效原因包括调用方式错误、方法已声明、签名不符、动态调用绕过、递归未防护及混淆两者用途。
-
Webman内存不会自动归零,因Worker进程常驻,unset()仅断开变量名与zval绑定,不释放仍被静态属性、闭包或循环引用持有的zval;必须手动清理大变量、限制静态缓存、适时调用gc_collect_cycles()并监控refcount。
-
Mock在Laravel中仅限tests目录的PHPUnit测试使用,是隔离外部依赖的测试替身而非性能优化手段;应优先用Http::fake()等内置fake方法,仅当需验证特定参数调用且无对应fake时才用Mockery。
-
PHPjson_encode()默认格式化输出,需禁用JSON_PRETTY_PRINT并添加JSON_UNESCAPED_UNICODE等标志精简;gzip压缩效果远优于PHP层优化,应优先配置Web服务器启用gzip并支持application/json。
-
多态字段名必须为“关系名_id/type”,如commentable_id/commentable_type,不可自定义;morphTo()参数顺序为(关系名,id字段,type字段);未配morphMap时type存完整类名,需手动映射并迁移旧数据;预加载只能用关系名commentable而非模型名。
-
include后变量在当前作用域是因为PHP将文件代码原样插入执行位置,无独立作用域;函数内include的变量默认为局部变量,需global声明或return方式传递。
-
Workerman启动后无法连接ws://localhost:2346的根本原因是默认不支持WebSocket协议解析,需启用WebServer模式并设置Worker::setProtocol('websocket'),同时确保Nginx透传Upgrade和Connection头,浏览器URL使用ws://且端口一致。
-
可采用四种方法实现布隆过滤器:一、手动用位图+多哈希函数;二、基于RedisBloom模块的分布式实现;三、使用bloom-filter-phpComposer包;四、利用GMP扩展优化超大位图。
-
phpenv仅管理PHP版本,不安装Doris;需先用phpenv配置好PHP≥7.4及mysqli扩展,再让PHP连接已独立部署的Doris集群,关键步骤包括验证Doris服务、用户授权、端口连通性,并使用mysqli通过9030端口建立带超时设置的连接。
-
XAMPP8.0+版本已彻底移除calendar扩展,因PHP8.0正式删除该废弃模块;调用cal_days_in_month()等函数会报错,无法通过php.ini启用或手动添加dll解决,应改用DateTime类等原生方法替代。
-
PHP数组转float有五种方法:一、array_map+floatval适合一维数组;二、foreach手动转换可加判断;三、array_walk原地修改省内存;四、递归函数处理多维数组;五、json_encode/decode利用JSON解析特性转换。
-
PHP后端开发需掌握Web服务器配置(如Nginx+php-fpm)、安全数据库操作(预处理防注入、ORM避N+1)、接口防护(CSRF、文件上传校验)、部署排查(Composer依赖、日志与内存溢出)等实战能力。
-
YiiRESTful接口返回401主因是认证流程未触发:QueryParamAuth默认参数名为access-token(非access_token),Apache会剥离Authorization头需配置.htaccess,loginByAccessToken()须返回IdentityInterface对象。
-
首先确保服务器安装了Web服务器、PHP及数据库;接着上传并解压源码,配置Web服务器指向项目目录,修改数据库连接信息并导入数据表结构;最后启用必要PHP扩展与错误提示,重启服务后访问网站完成部署。