Time of Update: 2018-12-04
兩年前曾發過一篇《用Python嘗試RabbitMQ》,沒想到兩年後的今天,基於PHP的amqp資料還是少得可憐,原來的幾個擴充也都一個個被廢棄,只剩amqp還健在,且被PECL收錄。雖說被收錄,可官方手冊中的資訊還是略顯單薄。言歸正傳,amqp擴充的安裝就不多說了,可參看前幾天發的那篇《給PHP安裝amqp擴充》裝好了amqp後就可以開始編寫代碼了:消費者:接收訊息邏輯:建立串連-->建立channel-->建立交換器-->建立隊列-->綁定交換器/隊列/路由鍵--&g
Time of Update: 2018-12-04
只對比較簡單的direct模式進行了封裝,隊列支援持久化、鏡像以及auto-delete。(但是不支援交換器的auto-delete,不知道擴充中為什麼沒與支援)先執行消費者,建立對交換器、隊列並與路由鍵綁定,並監聽訊息佇列;再執行生產者,向已建立的交換器中發送訊息。直接上代碼了:/** * 消費者類 */class AsynMessageConsumer{ private $config = array(); private $durable = True; private
Time of Update: 2018-12-04
2013-4-17更新請參看最新一篇《詳解使用PHP CURL訪問HTTPS》--------------------------------------------------------------------------------------------------------------------標題有點長,其實就是用來向https伺服器post資料function curlPost($url, $data, $timeout = 30){ $ssl =
Time of Update: 2018-12-04
程式非阻塞模式,這裡也可以理解成並發。而並發又暫且可以分為網路請求並發和本地並發。 先說一下網路請求並發理論描述假設有一個client,程式邏輯是要請求三個不同的server,處理各自的響應。傳統模型當然是順序執行,先發送第一個請求,等待收到響應資料後再發送第二個請求,以此類推。就像是單核CPU,一次只能處理一件事,其他事情被暫時阻塞。而併發模式可以讓三個server同時處理各自請求,這就可以使大量時間複用。畫個圖更好說明問題:前者為阻塞模式,忽略請求響應等時間,總耗時為700ms;而後者非阻塞
Time of Update: 2018-12-04
我們平時做使用者登入表單提交,使用者名稱密碼都是明文直接POST到後端,這樣很容易被別人從監聽到。註:包括使用MD5等雜湊函數處理後的資料,這裡也算做明文(現在MD5爆破網站已經很多了~)。對安全性要求較高的網站,比如銀行和大型企業等都會使用HTTPS對其進行加密通訊。但是由於效率原因,使用HTTPS的代價是及其昂貴的,對於訪問量稍大的網站就會造成嚴重的效能瓶頸。解決方案一般只能採用專門的SSL硬體加速裝置如F5的BIGIP等。所以很多網站選擇了類比SSL的做法,使用RSA來對密碼等安全資訊進行
Time of Update: 2018-12-04
聲明:本文內容只用於研究學習使用,請勿用於非法行為!上回咱說到了最近爆出的hash表碰撞漏洞,包括java、python、php等在內的很多常用語言均未倖免,今晚咱就來實際看看它的威力。攻擊原理:通過向目標伺服器post一組精心拼湊的數組參數,到達服務端後語言底層處理接收到的數組參數時,由於該漏洞的存在造成CPU的大量消耗,最終導致伺服器資源耗盡。不用什麼花哨的手法,就用PHP簡單實現下看下效果,點到即止。檔案:dos.php// 目標地址// 只要目標地址存在,不用管它是幹嘛的$host =
Time of Update: 2018-12-04
一:安裝libevent由於memcached安裝時,需要使用libevent類庫,所以先安裝libevent1.下載#wget http://www.monkey.org/~provos/libevent-2.0.12-stable.tar.gz 2.解壓縮#tar xzfv libevent-2.0.12-stable.tar.gz 3.進入目錄#cd libevent-2.0.12-stable 4. 編譯,安裝# ./configure# make# make install 註:
Time of Update: 2018-12-04
在多個jobs server時,PHP的gearman擴充在jobs server連接埠不通的情況下會自動檢測出來,從而自動切換到另一個;但是在IP不通的情況下,就會出錯了。該封裝解決了幾個問題:1、Jobs Server的IP如果突然不可達(例如機器關機),worker會自動重新添加jobs server(預設會報錯然後worker終止);2、添加jobs
Time of Update: 2018-12-04
聲明:補充翻譯了原帖中幾處未翻譯處。---------------------------------------------------- 轉帖開始 ------------------------------------------------------- PHP中的CURL函數庫(Client URL Library Function) curl_close - 關閉一個curl會話 curl_copy_handle - 拷貝一個curl串連資源的所有內容和參數 curl_errno
Time of Update: 2018-12-04
現象:使用PHP的CURL相關函數進行POST,當要POST的參數內容長度超過1024時,將無法獲得response的資料。即:curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);curl_setopt($ch, CURLOPT_POSTFIELDS, $data);當 strlen($data) > 1024 時,curl_exec函數將返回Null 字元串。解決:增加一個HTTP headercurl_setopt($ch,
Time of Update: 2018-12-04
有史以來最坑爹的一次擴充安裝,不曉得諸位有沒有嘗試過…………各種報錯啊!有木有?!¥#@%%&*……搗鼓半天,只編譯了個0.1.x的擴充版本,瞅了下,擦,函數少的可憐啊- -||| 不行,繼續~經過一天的努力,老天總算開眼了,趕緊總結下吧~----------------------------------------------- 我是分割線
Time of Update: 2018-12-04
看注釋,啥也不說了,歡迎各種跨平台測試!/** * 常用對稱式加密演算法類 * 支援通行金鑰:64/128/256 bit(位元組長度8/16/32) * 支援演算法:DES/AES(根據密鑰長度自動匹配使用:DES:64bit AES:128/256bit) * 支援模式:CBC/ECB/OFB/CFB * 密文編碼:base64字串/十六進位字串/二進位字串流 * 填充方式: PKCS5Padding(DES) * * @author: linvo * @version: 1.0.0 * @
Time of Update: 2018-12-04
由於下周要向內部刊物交稿,因此才有了本文。其實內容主要來源於上一篇博文,只是重新組織了語言,並做了原理性的闡述,更容易理解:P-----------------------------------------
Time of Update: 2018-12-04
通過openssl實現的簽名、驗簽、非對稱加解密,需要配合x.509認證(如crt和pem)檔案使用。由於各種原因,該類並不十分完善,歡迎各種測試!<?php/** * RSA演算法類 * 簽名及密文編碼:base64字串/十六進位字串/二進位字串流 * 填充方式: PKCS1Padding(加解密)/NOPadding(解密) * * Notice:Only accepts a single block. Block size is equal to the RSA key size!
Time of Update: 2018-12-04
http://www.php.net/manual/en/function.dl.php<?php// Example loading an extension based on OSif (!extension_loaded('sqlite')) { if (strtoupper(substr(PHP_OS, 0, 3)) === 'WIN') { dl('php_sqlite.dll'); } else { dl('sqlite.so');
Time of Update: 2018-12-04
<?phpclass timer { var $StartTime = 0; var $StopTime = 0; var $TimeSpent = 0; function start(){ $this->StartTime = microtime(); } function stop(){ $this->StopTime = microtime(); } function spent() { if ($this->TimeSpent) { return
Time of Update: 2018-12-04
今天在寫程式的時候,發現後台沒法解析前台的ajax資料。經過DEBUG,發現ajax發送前夕,資料被使用javascript的escape處理過了。url = url + "&n=" + vname + "&v=" + escape(val)如此這般,英文均沒有問題,如果是中文,就會出現%uXXXX之類的東西。後面php怎麼解析呢?加個函數吧:function js_unescape($str){$ret = '';$len = strlen($str);for ($i = 0;
Time of Update: 2018-12-04
原創:sandfish 前段時間看了一些關於驗證碼的文章,就是將一串隨機產生的數字或符號,產生一幅圖片,圖片裡加上一些幹擾象素(防止OCR),由使用者肉眼識別其中的驗證碼資訊,輸入表單提交網站驗證,驗證成功後才能使用某項功能。有篇文章也簡單的介紹了實現的方法,如下:代碼一: <?php /* * Filename: authpage.php * Author: hutuworm * Date: 2003-04-28 * @Copyleft hutuworm.org */
Time of Update: 2018-12-04
<?php/** * @author Tody Kwok * @copyright (c) Tody, 2010 */date_default_timezone_set('Asia/Hong_Kong');$size=$_FILES["UPLOAD"]["size"];$name=$_FILES["UPLOAD"]["name"];$type=$_FILES["UPLOAD"]["type"];$ext = strtolower(substr(strrchr($name,'.'),1));
Time of Update: 2018-12-04
一.首先是PHP 網頁的編碼1.php檔案本身的編碼與網頁的編碼應匹配a. 如果欲使用gb2312編碼,那麼php要輸出頭:header(“Content-Type: text/html; charset=gb2312"),靜態頁面添加<meta http-equiv="Content-Type" content="text/html;