導航:首頁 > 編程語言 > phpredis入門

phpredis入門

發布時間:2025-06-27 20:10:47

『壹』 mac一鍵安裝php環境(macphp集成環境安裝包)

怎樣在mac上面配置php環境

工具:Apache2.4.16、PHP、MacbookPro、MySQL5.7

步驟:

1、打開終端,輸入命令:sudoapachectlstart,啟動Apache。

2、打開ie瀏覽器,在地址欄中輸入localhost,出現ItWorks字元串,就說明Apache已經成功啟動。

3、在Macbookpro下,Apache的網站伺服器根目錄在/Library/WebServer/Documents路徑下。MacOS同樣自帶PHP,只需要在Apache的配置文件中添加Apache對PHP的支持就好了。在終端中輸入命令:

sudovim?/etc/apache2/httpd.conf

打開httpd.conf文件。

4、去掉注釋符號:LoadMolephp5_molelibexec/apache2/libphp5.so

5、重啟Apache服務。進入/Library/WebServer/Documents,新建一個測試的褲和衡PHP頁面,輸胡做入命棚指令:sudovimtest.php

6、在test.php中輸入以下代碼?phpphpinfo();?

在ie瀏覽器中打開頁面localhost/test.php,測試PHP是否可用即可。

如何在MacbookPro搭建PHP開發環境

MacbookPro配置PHP開發環境安裝環境如下:MacOS10.10.1Apache2.4.9PHP5.5.14MySQL5.6.22Apache配置在MacOS10.10.1中是自帶Apache軟體的,我們只需要啟手山動畢基中對應的服務就好了,以下命令是操作Apache時常用的幾個命令://啟鋒鉛動Apache.

MacM1安裝php開發環境

去年年底,蘋果推出了新款的M1晶元的mac,最近剛好要換電腦,考慮對比再三,還是選擇了M1晶元的mac;剛拿到手以後,擔心會有軟體不兼容啥的,網上也推薦作為主力開發的筆記本的話,不推薦M1,但是現在已經完全配置好了開發環境,安全下車了。下面就來簡單介紹下安裝過程中的步驟:

注意:如果沒有安裝brew,需要先安裝brew,使用arch-arm64brewinstall安裝

首先搜索沒拆明是否包含想要安裝的mysql版本,如下圖:

此處選擇[email protected]這個版本,我本地已經安裝完成了

安裝完成後,需要添加環境變數,這樣才能在任何目枯告錄下面直接打mysql訪問

先查詢有哪些php的版本,之前看網上說的M1,目前還不支持php7.3以下的版本,所有我安裝了php7.4

等待安裝完成後,可以開始部署項目了,由於我的項目是thinkphp框架開發的,而且用到了redis,所以,這邊需要先安裝redis依賴

安裝phpredis依賴(此處使用pecl安裝,網上有很多使用編譯安裝的方法,那種方法比較麻煩,而且需要配置的地方比較多,pecl安裝的話,快捷方便)

這個安裝完成後,就只需要去nginx目錄下面配置項目文件就OK了。

其他的不多說,主要提一點,就是thinkphp框架,重定向那邊的配置,location裡面的配置需要修改下,如下圖:

修改完成後,重啟御中伺服器,還要重啟php-fpm,這個是關鍵

『貳』 predis VS phpRedis

分別順序執行5W次redis寫命令,比較他們的時間(ms)。
雖有一定差別,但差別不大。

寫API,讀寫一定量key,統計時間。並使用ab並發測試,比較兩者區別。

phpRedis較predis還有一個有點,就是phpredis實現了pconnect()。pconnect在redis結束後,不會銷毀redis連接,直到空閑超時自動斷開。pconnect是依賴與php-fpm進程的,進程不死,connect就會存在。

在測試中,當高並發時,pconnect 可能會又更好的效果,但是並發低的話,connect會更快一些。
另外,pconnect連接數是和fpm數目相關聯的。

參考文章:
高並發下PHP請求Redis異常處理
phpredis中的connect和pconnect
史上最LOW的PHP連接池解決方案
請手動釋放你的資源
深入php redis pconnect

『叄』 linux中安裝擴展出現問題怎麼解決

1、安裝redisx0dx0ax0dx0a上傳phpredis-2.2.4.tar.gz到/usr/local/src目錄x0dx0acd /usr/local/src #進入軟體包存放目錄x0dx0atar zxvf phpredis-2.2.4.tar.gz #解壓x0dx0acd phpredis-2.2.4 #進入安裝目錄x0dx0a/usr/local/php/bin/phpize #用phpize生成configure配置文件x0dx0a./configure --with-php-config=/usr/local/php/bin/php-config #配置x0dx0amake #編譯x0dx0amake install #安裝x0dx0a安裝完成之後,出現下面的安裝路徑x0dx0a/usr/local/php/lib/php/extensions/no-debug-non-zts-20090626/x0dx0a2、配置php支持x0dx0avi /usr/local/php/etc/php.ini #編輯配置文件,在最後一行添加以下內容x0dx0a添加x0dx0aextension="redis.so"x0dx0a:wq! #保存退出x0dx0ax0dx0a3 重啟服務x0dx0asudo service nginx restartx0dx0asudo /etc/init.d/php-fpm restart

『肆』 java subscribe監聽超時怎麼解決

問題描述

redis提供了pub/sub功能,但在使用phpredis的subscribe時發現這樣一個問題,代碼如下(sub.php):

<?php/*監聽demo頻道,列印收到的信息*/function process($redis, $chan, $msg){
var_mp($msg);
}$redis = new Redis();$res = $redis->connect('127.0.0.1', '7979');$redis->subscribe(array('demo'), 'process');123456789

代碼運行後,發現如果在一段時間內未收到來自demo頻道的消息,則會報如下錯誤:

PHP Fatal error: Uncaught exception 'RedisException' with message 'read error on connection' in sub.php:11Stack trace:#0 /search/ballqiu/sub.php(11): Redis->subscribe(Array, 'process')#1 {main}
thrown in sub.php on line 1112345

原因分析

為了查找原因,我們使用strace對代碼進行了跟蹤:

strace php sub.php1

截取部分重要輸出如下:

//連接redis
connect(3, {sa_family=AF_INET, sin_port=htons(7979), sin_addr=inet_addr("127.0.0.1")}, 16) = -1 EINPROGRESS (Operation now in progress)
//發送subscribe命令
sendto(3, "subscribe demo ", 17, MSG_DONTWAIT, NULL, 0) = 17//收到響應
recvfrom(3, "*3 $9 subscribe $4 demo :1 "..., 8192, MSG_DONTWAIT, NULL, NULL) = 33poll([{fd=3, events=POLLIN|POLLPRI|POLLERR|POLLHUP}], 1, 0) = 0 (Timeout)
//套機字超時時間設為60s
poll([{fd=3, events=POLLIN|POLLERR|POLLHUP}], 1, 60000) = 0 (Timeout)
//等待超時,關閉連接
close(3) = 0//輸出錯誤信息
write(2, "PHP Fatal error: Uncaught excep"..., 261PHP Fatal error: Uncaught exception 'RedisException' with message 'read error on connection' 12345678910111213

可見報錯的本質是poll設置接收超時所致,從starce結果我們知道這個超時默認是60s。

解決

我們有兩種方法改變超時
- 方法1
在代碼起始處設置

ini_set('default_socket_timeout', -1);1

  • 方法2
    在redis connect後執行

  • $redis->setOption(Redis::OPT_READ_TIMEOUT, -1);1

  • 兩種方法中的-1均表示永不超時,你也可以將超時設置為自己希望的時間。
    無論使用哪種方法,再次strace, 你會發現poll的超時被設為了-1。

  • recvfrom(3, "*3 $9 subscribe $4 demo :1 "..., 8192, 0, NULL, NULL) = 33poll([{fd=3, events=POLLIN|POLLPRI|POLLERR|POLLHUP}], 1, 0) = 0 (Timeout)

  • //超時被設為-1, 即永不超時

  • poll([{fd=3, events=POLLIN|POLLERR|POLLHUP}], 1, -11234

  • 個人比較推薦方法2,它隻影響到redis本身。而方法1會對其它方法產生影響,比如
    file_get_contents等。

    總結

    使用phpredis的subscribe時,默認60內沒有收到消息,sub端就會因超時異常退出。可以自行設置延長超時時間或永不超時。

閱讀全文

與phpredis入門相關的資料

熱點內容
翻新二手車解壓 瀏覽:693
公鑰加密私鑰加密流程圖 瀏覽:498
蘋果手機看本地視頻用什麼app 瀏覽:299
為什麼某app打不開 瀏覽:388
看國內行業板塊行情用什麼app 瀏覽:692
啟動ftp命令linux 瀏覽:996
javades加密解密演算法 瀏覽:862
預約上門系統源碼 瀏覽:206
加密列印機介面可以轉usb嗎 瀏覽:486
哪些程序員有滑鼠手 瀏覽:593
單片機維修視頻講解 瀏覽:126
java流壓縮文件 瀏覽:645
zr61壓縮機 瀏覽:24
大眾波羅壓縮機 瀏覽:707
androidazw3 瀏覽:35
fanuc加工中心編程教程 瀏覽:865
qq音樂怎麼找伺服器 瀏覽:689
將電腦ip地址設為伺服器 瀏覽:159
dos清除命令 瀏覽:992
程序員面試演算法筆試 瀏覽:658