-
TSRM是PHP内核中实现线程安全的资源隔离机制,编译时通过--enable-maintainer-zts启用、--disable-zts禁用;多线程SAPI(如worker/eventMPM)必须启用,而prefork、PHP-FPM、CLI等应禁用以提升性能与稳定性。
-
array_map是PHP中用于批量处理数组的高阶函数,不修改原数组,而是对每个元素应用回调函数后返回新数组,保持输入输出长度一致,适合纯数据转换场景。
-
PHP提供多种字符串大小写转换函数:strtoupper()转大写、strtolower()转小写、ucfirst()首字母大写、ucwords()单词首字母大写,多字节字符需用mb_strtoupper()/mb_strtolower()。
-
使用PDO、MySQLi面向对象/过程式方式的预处理语句绑定参数可防止SQL注入,动态条件需校验字段白名单,批量插入应复用预处理语句并结合事务。
-
需根据扩展(mysqli/PDO)及数组形态(索引/关联/双向)选择提取方式:一、mysqli_fetch_array(MYSQLI_BOTH)得混合数组;二、mysqli_fetch_assoc()得关联数组;三、mysqli_fetch_row()得数字索引数组;四、PDO::fetchAll()支持FETCH_ASSOC/FETCH_NUM/FETCH_BOTH;五、PDOFETCH_CLASS结合get_object_vars()转对象为数组。
-
PHP变量不支持内联注释,需在声明前用DocBlock注释,类属性支持@var等标签说明类型与用途,局部变量无法被PHPDoc关联,应优先使用PHP7.4+属性类型声明。
-
答案:通过MySQL主从复制与PHP读写分离可提升高并发Web应用性能。配置主库启用binlog,创建复制账号;从库设置只读并连接主库同步数据;PHP根据SQL类型路由读写请求;结合半同步、延迟监控、连接池和缓存优化整体性能;注意事务一致性、刚写入数据的延迟读取及从库只读保护,确保系统稳定高效。
-
PHP表单小数被截断主因是前端未正确提交小数:检查$_POST['price']原始值,若已是int说明浏览器已修正;确保input的step、value用英文小数点,避免type="number"与中文locale冲突;强转前应str_replace(',','.',$val)再(float)转换;数据库须用DECIMAL而非FLOAT存金额。
-
insertAll()比循环insert()快得多,因其合并多行为单条SQL,减少事务开销、网络往返和事件触发;而循环insert()每次都重复解析、校验、建事务。
-
PHP浮点数直接比较易出错因二进制无法精确表示十进制小数,如0.1+0.2≠0.3;应使用bccomp字符串高精度比较,需传字符串参数并合理设置$scale。
-
PHP8.5不支持原生多对多关联语法,所谓“多对多”需通过PDO/MySQLi手写JOIN查询或借助Laravel等框架实现;典型查询需显式指定字段、避免笛卡尔积与字段歧义,并注意中间表命名、类型转换及性能优化。
-
应使用HTTP头禁用缓存并添加随机参数,同时用安全方式获取真实IP记录日志:在image.php中设置Cache-Control和Expires头,输出PNG前写入制表符分隔的日志,确保GD扩展启用、文件无BOM、日志路径可写且并发安全。
-
PHP连接MySQL启用SSL需先确认服务端已配置SSL证书,再通过PDO或MySQLi设置SSL参数:PDO推荐使用PDO::MYSQL_ATTR_SSL_MODE等选项,MySQLi需在connect前调用mysqli_ssl_set(),并注意证书路径、验证模式与环境匹配。
-
Workerman用Swow驱动需满足:PHP≥8.0、已安装启用swow扩展、Workerman≥4.1.0、前台启动(禁用daemon)、设置Worker::$eventLoopClass=\Swow\EventLoop::class并禁用默认定时器。
-
单例模式确保类仅有一个实例并提供全局访问点,适用于数据库连接、缓存服务等需统一管理资源的场景,避免重复创建对象以节省内存与初始化开销,通过静态方法实现全局调用,相比全局变量更安全,可防止意外修改,保障配置一致性与日志集中处理,有效支持跨模块状态共享且减少命名冲突,但应避免滥用以防增加耦合影响测试。