在tp5版本的时候日志中保存了全部的请求信息,保存了请求地址 请求方法 请求路由  请求头  请求参数,但是在tp6中官方取消了。官方解释说由于日志记录了所有的运行错误,因此养成经常查看日志文件的习惯,可以避免和及早发现很多的错误隐患。但是我觉得不方便我定位线上问题,于是把tp5源码中的部分移植到tp6中,tp5中大部分放在tp底层,为了不破坏tp框架我把代码放到中间件中进行继承,所有中间件全部继承此代码。自动记录请求信息。<?php declare (st
mysqli提供了异步执行sql的功能,类似于select轮询机制。先提交SQL到预发布,再去轮询查询是否ok。query的时候加上MYSQLI_ASYNC选项,query就直接提交到mysql,但是本身不等待执行结果。mysqli不亏是加强版的mysql扩展,可惜不是pdo<?php /**  * 执行SQL  * @param $sql  * @return mysqli  */ fu
<?php //  读取带BOM的文件(记事本创建a.txt,保存选择Utf8) $text = file_get_contents('./a.txt'); //  二进制的BOM头转16进制输出 echo strtoupper(bin2hex($text)); //  例如UTF8输出EFBBBFPHP本身不忽略BOM头,但是也不处理BOM头,所以大家曾经都遇到
PHP开发者基本都是万能var_dump,很少echo对象,echo对象默认会报错.echo对象时默认会自动调用魔术方法__toString蹭点百度流量// 1.Object of class a could not be converted to string (报错) /* class  a{ } $a = new a();
<?php //获得信号量的方法 $execute = function () {     //(1).创建IPC通信KEY     $key = ftok(__FILE__, 'a');     //(2).获取一个信号量资源句柄    &nb
(1).基本的写入(a.php)//(1.1).创建一个IPC通信专用的KEY $shm_key = ftok(__FILE__, 't'); //(1.2).创建或者打开共享内存块,创建1KB $shmop = shmop_open($shm_key, 'c', '0644', 1024); if (!$shmop) {  
(1).告诉pecl你的php.ini在哪里,如果你也不知道,执行php --inipear config-set php_ini   /www/server/php/70/etc/php.ini(2).用pecl安装扩展试试pecl install ./inotify-3.0.0.tgz(3).php -m 发现已经自动帮你配置了php.ini 可以直接使用扩展咯,不用自己加载so文件
php://memory伪协议,包装器将数据以文件形式来操作,而底层通过内存保存的形式。简单来说就是让你能通过操作文件的形式来读写内存,方便不?---如果你的码农生涯也在迷茫,不如忙起来,因为忙起来什么都忘记了echo sprintf("使用前内存%.2fMB" . PHP_EOL, (memory_get_usage() / 1024 / 1024)); // 读写形式申请内存协
之前在写支付回调的时候,因为第三方支付的回调机制有问题,存在并发回调的情况。如果对回调的订单不加锁的话,会造成一笔订单重复处理的情况。在 Laravel 中使用基于 Redis 的锁非常简单,只需要使用 Cache::lock() 就可以创建和管理锁。更多使用方法: https://learnku.com/docs/laravel/6.x/cache/5160#atomic-locks12345678910111213141516use Illuminate\Sup
在cli下运行消费数据,需要保持redis断线重连,虽然redis可以直接传递参数长连接,但是如果redis服务器异常关闭后再重启则需要重启php脚本,比较麻烦,所以写了一个redis断线重连简单版。<?php class PRedis {     /**      * options      * @var
Top