PHP用Swoole的WebSocket功能编写聊天室Demo-牛翰网

PHP用Swoole的WebSocket功能编写聊天室Demo

#### 前提: 1. linux环境下PHP有可用的Swoole扩展。 2. 9501端口可访问。 #### 后端 ```php $value) { if (null $value) { $arr[$key] = ''; } if (is_array($value)) { $arr
11个月前
09215
用PHP封装一个强大且通用的cURL方法-牛翰网

用PHP封装一个强大且通用的cURL方法

用PHP封装一个强大且通用的cURL方法。 用PHP封装一个强大且通用的cURL方法。 用PHP封装一个强大且通用的cURL方法。 用PHP封装一个强大且通用的cURL方法。 /** * @function 强大且通用的cURL请求...
11个月前
0525
浅谈PHP结合JavaScript SSE(Server Sent Events)实现服务器实时推送功能-牛翰网

浅谈PHP结合JavaScript SSE(Server Sent Events)实现服务器实时推送功能

说明 如配置后Nginx遇到502/504的,请参考这两篇文章的解决方案 PHP-FPM与Nginx通信报 502 Bad Gateway或504 Gateway Timeout终极解决方案(适用于PHP执行耗时任务情况下的报错) Linux系统下配...
11个月前
010110
PHP-FPM与Nginx通信报 502 Bad Gateway或504 Gateway Timeout终极解决方案(适用于PHP执行耗时任务情况下的报错)-牛翰网

PHP-FPM与Nginx通信报 502 Bad Gateway或504 Gateway Timeout终极解决方案(适用于PHP执行耗时任务情况下的报错)

前置条件: 适用于常规请求都没问题,但是执行某些php脚本需要超过一分钟的情况下的502/504,并不是任何请求都502/504的情况(这说明php-fpm或者nginx配置错误)。 出现502/504的原因 502 执行...
11个月前
04613
Linux系统下配置Nginx使部分URL使用多套自定义的PHP-FPM配置-牛翰网

Linux系统下配置Nginx使部分URL使用多套自定义的PHP-FPM配置

Nginx修改演示: vim /usr/local/nginx/conf/vhost/example.com server{ listen 80; server_name 192.168.1.180; location / { root /Code/project/public; index ind
11个月前
0287
基于Laravel封装一个强大的请求响应日志记录中间件-牛翰网

基于Laravel封装一个强大的请求响应日志记录中间件

为何强大 记录全面: 包含请求路径、请求方法、客户端IP、设备标识、荷载数据、文件上传、请求头、业务逻辑处理时间、业务逻辑所耗内存、用户id、HTTP响应状态码、以及响应数据。 配置简单: 默...
11个月前
04412
封装一个PHP可控限速下载文件的方法-牛翰网

封装一个PHP可控限速下载文件的方法

说明 实测下载后的文件与源文件哈希值一致,保证数据传输安全一致。 如果下载到的文件每次都165KB左右,和源文件大小不符合,需要用IDE打开下载的文件,看看是否报致命错误,提示超过最大内存限...
11个月前
03914
浅谈PHP框架中类成员方法的类类型形参是怎么利用ReflectionClass反射类自动实例化的(应该是全网首发)-牛翰网

浅谈PHP框架中类成员方法的类类型形参是怎么利用ReflectionClass反射类自动实例化的(应该是全网首发)

说明 1. 或许是全网首发,我翻过很多文章,从未有一个博主讲过这个东西,很多博主只讲了IOC、DI和反射机制的常见用法,因类类型形参反射的巧妙用法有相当高的难度和学习盲区,所以从未有人讲过...
11个月前
03211
深入理解Laravel(CVE-2021-3129)RCE漏洞(超2万字从源码分析黑客攻击流程)-牛翰网

深入理解Laravel(CVE-2021-3129)RCE漏洞(超2万字从源码分析黑客攻击流程)

背景 近期查看公司项目的请求日志,发现有一段来自俄罗斯首都莫斯科(根据IP是这样,没精力溯源)的异常请求,看传参就能猜到是EXP攻击,不是瞎扫描瞎传参的那种。日志如下(已做部分修改): [...
11个月前
0495
十几个冷门还好用的PHP写法(冷门的让人震惊)-牛翰网

十几个冷门还好用的PHP写法(冷门的让人震惊)

环境:PHP8.1 1. else foreach/else for //012 if(false) { } else for($i = 0; $i < 3; $i++) { echo $i; } //012 if(false) { } else foreach([0, 1, 2] as $v
11个月前
0285