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實現鎖

~~~
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();