原创 讓C/S進行全雙工通信的WebSocket協議

超文本傳輸協議(HTTP)作爲一種簡單的協議,在面對功能日益豐富的 Web應用時,遇到了如下瓶頸: 1、在客戶端請求時,會建立一個TCP連接,然後發送請求,服務端給出響應,然後連接就關閉了。(現在的HTTP1.1支持消除了這個瓶頸

原创 初探五種服務器網絡編程模型

五種服務器網絡編程模型 首先來看看 Linux 上可以使用的 I/O 模型,下圖是基本 Linux I/O 模型的簡單矩陣,瞭解這些 I/O 相關知識能有助於理解後面的網絡模型。 1.同步阻塞迭代模型 首先介紹同步阻塞迭代模型

原创 如何高效地利用MySQL索引

如何高效地利用MySQL索引 爲實現MySQL的高性能,我們需要在優化索引、優化查詢、優化表結構三個方面努力,這三個方面每個都至關重要。 本文主要討論索引相關。 1、要想高效利用索引,我們首先要考慮如何正確建立索引。 (1)在經

原创 Nginx 與 PHP-FPM 的協作機制

作爲現在被很多大公司採用的Nginx + PHP-FPM,它們是怎麼樣做到協同合作呢? FastCGI 協議 要搞明白這個問題,首先得說 CGI (Common Gateway Interface) 和 FastCGI 這兩個協議

原创 Apache的三種工作模式及相關配置

Apache的三種工作模式 作爲老牌服務器,Apache仍在不斷地發展,就目前來說,它一共有三種穩定的MPM(Multi-Processing Module,多進程處理模塊)。它們分別是 prefork、worker 和 even

原创 初步探索Nginx高併發原理

Nginx 首先要明白,Nginx採用的是多進程(單線程)&多路IO複用模型。使用了I/O多路複用技術的Nginx,就成了”併發事件驅動“的服務器。 多進程的工作模式 1、Nginx在啓動後,master進程fork()多個相互

原创 PHP中對象是按值傳遞還是按引用傳遞?

1.首先,什麼是按值傳遞和按引用傳遞?按值傳遞就是僅僅把值傳遞過去,相當於傳遞的是值的拷貝,而按引用傳遞傳遞的是內存的地址。在 PHP5 中,如果按引用傳遞,就是將 zval 的地址賦給另一個變量,這時,兩個變量都同時指向一個 zval

原创 深入理解PHP中的SESSION技術

一、默認的存儲機制——文件 PHP默認使用磁盤文件來保存 SESSION數據,即默認存儲方式爲 files。 php.ini中關於 SESSION的基本配置: 1、session.save_handler = files //S

原创 PHP實現斐波那契數列

在數學上,斐波納契數列以如下被以遞歸的方法定義: F(0)=0,F(1)=1,F(n)=F(n-1)+F(n-2)(n≥2,n∈N*) 使用遞歸實現 很直觀表示方式,用遞歸很容易實現: function f($a) { if

原创 PHP 生成器用法介紹

初識生成器 說到 PHP 中的生成器,很多人都知道它是一種可以用來高效迭代的工具,比如: <?php function xrange($start, $end, $step = 1) { for ($i =

原创 服務器端 I/O 性能:Node vs. PHP vs. Java vs. Go

前言:看到國外一篇講幾種語言 I/O 特性特別好的文章,於是就翻譯出來,供大家參考學習。 原文地址:https://www.toptal.com/back-end/server-side-io-performance-node-php-j

原创 MySQL 重要參數 innodb_flush_log_at_trx_commit 和 sync_binlog

innodb_flush_log_at_trx_commit 該參數控制重做日誌寫入磁盤的過程。我們知道 InnoDB 使用“Write Ahead Log”策略來避免數據丟失問題,即依靠重做日誌來保證數據能在丟失後進行恢復。因此,Inn

原创 如何連接局域網內的 MySQL

準備連接虛擬機裏 Linux中的 MySQL,卻一直報錯:2003——can’t connect to mysql server on localhost(10061) 谷歌一番,發現要做以下工作: 1.首先使用 ping 命令來確保要確

原创 淺談TCP和UDP的區別

作爲運輸層中兩個主要的協議,TCP和UDP都能嚮應用層提供通信服務,然而它們提供的服務差別還是很大的。 1、 TCP協議是面向連接的。也就是說,應用程序在使用 TCP協議之前,必須先建立起一個 TCP連接,之後才能進行通信活動。因此,使

原创 MySQL 基於日誌點複製

MySQL 的複製功能不僅可以構建高性能的應用,也是高可用性、可擴展性、災難恢復等工作的基礎。 複製的主要功能 1、數據分佈。 MySQL 提供的複製功能並不需要很大的帶寬的要求,因此可以在不同的物理位置來分佈數據。 2、讀操作的負載均