原创 Swoole TCP 流數據邊界問題解決方案

1. 數據發送過程 我的官方羣點擊此處。 首先由客戶端將數據發往緩衝區 (服務端並不是直接收到的), 對於客戶端來說,這次的數據即是發送成功了, 對於服務端是否真正的收到他是不知道的, 然後再由服務端從緩衝區中讀取數據。圖解:    

原创 PHP 併發場景的 3 種解決方案

在秒殺,搶購等併發場景下,可能會出現超賣的現象,在 PHP 語言中並沒有原生提供併發的解決方案,因此就需要藉助其他方式來實現併發控制。 列出常見的解決方案有: 使用隊列,額外起一個進程處理隊列,併發請求都放到隊列中,由額外進程串行處理,併

原创 PHP 內核:foreach 是如何工作的(二)

PHP 內核:foreach 是如何工作的(一) PHP 5 內部數組指針和散列指針 PHP 5 中的數組有一個專用的 “內部數組指針”(IAP),它適當地支持修改:每當刪除一個元素時,都會檢查 IAP 是否指向該元素。 如果是,則轉發到

原创 PHP 內核:foreach 是如何工作的(一)

foreach 是如何工作的? PHP 內核:foreach 是如何工作的(二) 首先聲明,我知道 foreach 是什麼,也知道怎麼去用它。但這個問題關心的是,內核中 foreach 是如何運行的,我不想回答關於 “如何使用 forea

原创 PHP如何實現簡單的Socket

首先使用PHP製作的Socket服務端,其主要是設置Socket的IP地址及端口號;然後監聽端口,如果有客戶端連接的話,則接收連接請求和數據,最後處理數據並且返回數據即可。 示例代碼: <?php //確保在連接客戶端時不會超時 set

原创 PHP 消息隊列 Kafka 使用

安裝 Kafka 服務 直接到 kafka 官網 , 下載最新的 wget https://mirror.bit.edu.cn/apache/kafka/2.5.0/kafka_2.13-2.5.0.tgz 解壓,進入目錄 tar -

原创 你知道Laravel ORM 中的騷操作嗎

append class User extends Model { protected $appends = ['is_adult']; public function getIsAdultAttribute() { retur

原创 PHP 的 interface 有什麼用處

確實,PHP 接口是有它的目的的。 它們是契約,是給其他開發人員的說明手冊。然而,還是很難理解接口有什麼用。   基礎 接口是抽象的類,無法直接實例化,但是可被實現。 這是一個基本的例子 interface MyInterface {

原创 PHP 框架 Hyperf 實現處理超時未支付訂單和延時隊列

延時隊列 Delayproducer.Php Amqpbuilder.Php AmqpBuilder.php <?php declare(strict_types = 1); namespace App\Components\Amq

原创 ThinkPHP6 Workerman 基本使用

Workerman   Workerman是一款純PHP開發的開源高性能的PHP socket 服務器框架。被廣泛的用於手機app、手遊服務端、網絡遊戲服務器、聊天室服務器、硬件通訊服務器、智能家居、車聯網、物聯網等領域的開發。 支持TC

原创 基於workerman的實時推送(摒棄ajax輪詢)

先扯些這些內容: TCP/IP TCP/IP是個協議組,可分爲三個層次:網絡層、傳輸層和應用層。 在網絡層有IP協議、ICMP協議、ARP協議、RARP協議和BOOTP協議。 在傳輸層中有TCP協議與UDP協議。 在應用層有: TCP包括

原创 Docker 快速搭建主從 + 哨兵監控

安裝 Redis 執行命令 我的官方羣點擊此處。 docker pull redis 部署方案 啓動三臺機器,6379 容器作爲主節點,其餘作爲從節點 開始準備工作   目錄結構 ├── conf │ ├── redis_63

原创 教你從防護角度看Thinkphp歷史漏洞

一、前言 19年初,網上公開了2個Thinkphp5的RCE漏洞,漏洞非常好用,導致有很多攻擊者用掃描器進行全網掃描。我們通過ips設備持續觀察到大量利用這幾個漏洞進行批量getshell的攻擊流量,本文主要從流量角度簡要分析和利用thi

原创 使用Laravel集成JWT認證開發RestfulApi

在使用跨平臺應用程序時, API 是一個非常不錯的選擇。 除了網站,您的產品可能還有 Android 和 iOS 應用程序。 在這種情況下, API 也是同樣出色的,因爲您可以在不更改任何後端代碼的情況下編寫不同的前端。 使用 API 時

原创 PHP7中的isset

升級 php7 後 isset 不太對了   公司升級 php7 後出現了一個問題 類似這樣 isset($post->user->name) 始終爲 false 之前的 php 5.6 就很正常 laravel 版本是 5.1.35(很