🔥码云GVP开源项目 12k star Uniapp+ElementUI 功能强大 支持多语言、二开方便! 广告
1.PHP缓冲区; memory_limit #读大文件PHP内存限制; ini_set("output_buffering","0″) #配置缓冲大小,当到达是输出; ob_end_clean()和ob_end_flush() #作用,就是终止缓冲。这样就不用等到有4096bytes的缓冲之后才被发送出去了。 ob_flush()和flush() #前者是把数据从PHP的缓冲中释放出来,后者是把不在缓冲中的或者说是被释放出来的数据发送到浏览器。所以当缓冲存在的时候,我们必须ob_flush()和flush()同时使用。 ob_implicit_flush(true) #这个函数强制每当有输出的时候,即刻把输出发送到浏览器。这样就不需要每次输出(echo)后,都用flush()来发送到浏览器了。 ob_get_contents() #获取缓冲区的内容 ,使用的时候在前面加上ob_start(); 参考地址:https://www.cnblogs.com/lq527/p/6228885.html 2.PHP并发; 文件锁 ~~~ $data = $cache->get('key'); if(!$data){ $fp = fopen('lockfile'); if(flock($fp, LOCK_EX)){ $data = $cache->get('key');//拿到锁后再次检查缓存,这时可能已经有了 if(!$data){ $data = mysql->query(); $cache->set('key', $data); } flock($fp, LOCK_UN); } fclose($fp); } ~~~ memcache实现锁 ![](https://box.kancloud.cn/ef0a3ee4e50bc50d6353f6a6f71300ec_727x288.jpeg) ~~~ if($mc->add($key,$value)) { //执行抽奖逻辑 //逻辑结束后,删除锁 $mc->delete($key); //更新到数据库 } else { //告诉用户正在抽奖,请稍后 } ~~~ redis消息队列 ~~~ 1).redis函数rpush,lpop 2).建议定时任务入队列 3)创建定时任务出队列 ~~~ php数组实现消息队列 ~~~ array_push($queue, $in); // 入队 等价于 $queue[] = $in; $out = array_shift($queue); // 出队 ~~~ 3.高性能的异步并发 TCP、UDP、Unix Socket、HTTP,WebSocket 服务 Swoole:面向生产环境的 PHP 异步网络通信引擎 使 PHP 开发人员可以编写高性能的异步并发 TCP、UDP、Unix Socket、HTTP,WebSocket 服务。Swoole 可以广泛应用于互联网、移动通信、企业软件、云计算、网络游戏、物联网(IOT)、车联网、智能家居等领域。 使用 PHP + Swoole 作为网络通信框架,可以使企业 IT 研发团队的效率大大提升,更加专注于开发创新产品。 4.提高PHP性能 装APC或者Xcache缓存 5.单机 nginx 应对高并发处理 ~~~ worker_connections 10000; ulimit -n 10240; work_limit_nofile 10240 ; echo 1 > /proc/sys/net/ipv4/tcp_tw_reuse #TCP连接立即回收、回用(recycle、reuse) echo 1 > /proc/sys/net/ipv4/tcp_tw_recy #TCP连接立即回收、回用(recycle、reuse) ~~~ 6.编写一个var_dump();