在编写thinkphp常驻内存的命令行应用中我们需要保证数据库连接不会断开,保证断开还能重新连接,因此大部分人的方案是直接修改tp的数据库配置文件database.php
// 开启断线重连 'break_reconnect' => true,
通常这样修改就行了,但是如果fpm中有使用事务操作,这样配置非常危险,我们需要保证fpm和cli下这个配置不一致,fpm下这个配置最好保持为false,cli下应该设置为true。
只需要我们把上面的配置默认设置为false,然后再cli命令行应用中重新设置
$dbConfig = config('database.'); $dbConfig['break_reconnect'] = true; Db::init($dbConfig);
大功告成,本人tp5.1
在PHP中,大部分变量类型,如字符串,整型,浮点,数组等都是值类型的,而类和对象是引用类型.和其他语言有点差距.(1).在值类型中我们直接使用&符号表示指向对应变量的内存地址,当前变量和被指向的变量只要有1个的值被修改都会直接影响另外一个变量的值发生变化。(ps:还是非常节省内存的,可以使用...
如果想在windows中执行php,并且让php脚本在后台运行,可以用下面的cmd命令start /b php D:\wwwroot\default\demo1\run.php例如上面的命令意思后台运行run.php,如果想用php编写异步代码: ...
重构框架的时候想要考虑支持下cli模式,于是参考了thinkphp的底层。/** * 获取应用根目录 * @return string */ public static function getRootP...
<?php /** * daemonize让当前脚本为守护进程执行 * @param string $callback 匿名函数 */ function daemonize($callback) {...
(1)swoole启动的主进程是master进程负责全局管理,然后master进程会再fork一个manager进程。(2)manager进程开始统一管理进程创建回收管理。(3)manager进程根据设置的worker_num和task_worker_num来创建work进程和task进程因此启动s...
<?php $member = new class { public function getInfo() { ...