原创 使用 swoole_process 實現 PHP 進程池

swoole_process 主要是用來代替 PHP 的 pcntl 擴展。我們知道 pcntl 是用來進行多進程編程的,而 pcntl 只提供了 fork 這樣原始的接口,容易使用錯誤,並且沒有提供進程間通信以及重定向標準輸入輸出的功能。

原创 PHP 使用 Swoole - TaskWorker 實現異步操作 Mysql

在一般的 Server 程序中都會有一些耗時的任務,比如:發送郵件、聊天服務器發送廣播等。如果我們採用同步阻塞的防水去執行這些任務,那麼這肯定會非常的慢。 Swoole 的 TaskWorker 進程池可以用來執行一些異步的任務,而且不會影

原创 循序漸進學爬蟲:多線程+隊列爬取豆瓣高分計算機類書籍

上一次的抓取豆瓣高分計算機書籍的案例,採用的是完全同步的方式。即單個線程依次執行完所有的邏輯,這樣存在的問題就是我們的爬蟲程序會非常的慢。 所以本文作爲上一次案例的升級版本,通過循序漸進、動手實踐的方式來達到更好的學習效果。 相對於上次的案

原创 Swoole 初探:環境搭建與入門案例

Swoole 是一個 php 的擴展,它的核心目標就是解決 php 在實現一些高訪問 server 服務中可能遇到的一系列問題,這些問題用原生的 php 往往並不能很方便高效的解決。 對於這一問題企業一般多會採用其他技術,比如使用 java

原创 Python爬蟲案例:抓取豆瓣編程類高評分書籍

對於很多正在學習計算機的朋友來說,選擇合適的學習材料是非常重要的。 本文將通過 Python 來爬取豆瓣編程類評分大於 9.0 的書籍。 此案例很適合入門爬蟲的朋友學習,總共也就 3 個函數。 下圖是最終的結果: 下面進入正題: 一、採集源

原创 Python 爬蟲利器 Beautiful Soup 4 之文檔樹的搜索

前面兩篇介紹的是 Beautiful Soup 4 的基本對象類型和文檔樹的遍歷, 本篇介紹 Beautiful Soup 4 的文檔搜索 搜索文檔樹主要使用兩個方法 find() 和 find_all() find_all(): find

原创 Python爬蟲利器:Beautiful Soup的使用(二)

上一篇文章介紹了 BeautifulSoup 的安裝以及基本對象類型。 本次介紹使用 bs4 對 HTML 文檔樹的遍歷。 先把本文用到的例子貼上: str = """ <!DOCTYPE html> <html> <head><title

原创 python爬蟲案例:抓取網易新聞

此文屬於入門級級別的爬蟲,老司機們就不用看了。 本次主要是爬取網易新聞,包括新聞標題、作者、來源、發佈時間、新聞正文。 首先我們打開163的網站,我們隨意選擇一個分類,這裏我選的分類是國內新聞。然後鼠標右鍵點擊查看源代碼,發現源代碼中並沒有

原创 PHP中的 Iterator 與 Generator

在講解生成器之前先介紹一下迭代器: 在 PHP 中,通常情況下遍歷數組使用 foreach 來遍歷。 如果我們要想讓一個對象可以遍歷呢? PHP 爲我們提供了 Iterator 接口,只要實現了這個接口,這個對象就可以通過 foreach

原创 Python基礎學習之常用六大數據類型

剛開始學習一門編程語言,除了瞭解運行環境與語言類型之外,最基本還是從該語言的基本數據類型開始學起。 Python六大常用數據類型: int 整數 float 浮點數 str 字符串 list

原创 Python基礎系列:初識python引用計數與弱引用

寫在前邊: 之前的socket系列就告一段落,主要是對自己所學做一個總結與記錄。 接下來我打算基於libevent寫一個支持併發的HTTP服務器。因爲之前學習羣裏大神早就開發過一個同時支持HTTP與WebSocket的服務器,我看了之後感覺

原创 一次讀懂 Select、Poll、Epoll IO複用技術

“ 閱讀本文大概需要 6 分鐘。” 我們之前採用的多進程方式實現的服務器端,一次創建多個工作子進程來給客戶端提供服務。其實這種方式是存在問題的。 可以打個比方:如果我們先前創建的幾個進程承載不了目前快速發展的業務的話,是不是還得增加進程數?