『壹』 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後執行
兩種方法中的-1均表示永不超時,你也可以將超時設置為自己希望的時間。
無論使用哪種方法,再次strace, 你會發現poll的超時被設為了-1。
個人比較推薦方法2,它隻影響到redis本身。而方法1會對其它方法產生影響,比如
file_get_contents等。
總結
使用phpredis的subscribe時,默認60內沒有收到消息,sub端就會因超時異常退出。可以自行設置延長超時時間或永不超時。