❶ 網頁游戲能用php做後端開發嗎
網頁游戲可以用PHP作為後端開發,前台一般使用FLASH,無需常連接的PHP,開心網的農場和餐廳都是這樣的方式。
❷ php7無法安裝memcache擴展 系統 centos-6.8 Nginx-1.10.2 PHP-7.0.13/5.6.28 memcached-1.4
一 下載需要的源碼包
所有安裝包均選用最新的。
1. 下載libevent2.0.22
點擊紅色部分下載
下載memcached1.4.24
點擊紅色部分,下載最新版本
下載php擴展memcache3.0.8
選擇需要的版本
二 安裝詳細步驟
首先將以上三個軟體包下載到/tmp目錄下
1. 安裝libevent
cd /tmp #首先進入到該下載包的目錄
tar zxvf libevent-2.0.22-stable.tar.gz #解壓包cd libevent-2.0.22-stable #進入到解壓的目錄./configure --prefix=/usr/local #編譯前配置,生成Makefile文件,路徑可自行更改make; make install #編譯+安裝
1
測試是否安裝成功
看到這些信息,表示成功啦
2. 安裝memcached
cd /tmp #首先進入到該下載包的目錄
tar zxvf memcached-1.4.24.tar.gz #解壓包
cd memcached-1.4.24 #進入到解壓的目錄
./configure –with-libevent=/usr/local #編譯前配置,生成Makefile文件,路徑必須與libevent中一致make; make install #編譯+安裝
1
測試是否安裝成功
表示成功的信息
通過以上操作,就完成了memcached伺服器的安裝。特別的簡單吧!現在就來搞一搞memcache的php擴展安裝吧3. 安裝擴展
cd /tmp #首先進入到該下載包的目錄
tar zxvf memcache-3.0.8.tgz #解壓包
cd memcache-3.0.8 #進入到解壓的目錄
/opt/lampp/bin/phpize #動態為php添加擴展。phpize路徑可能不一致,請根據自己的實際情況./configure –enable-memcache –with-php-config=/opt/lampp/bin/php-config –with-zlib-dir #php-config請根據自己環境情況填寫make; make install #編譯+安裝
1
完成以上步驟時,心情愉悅的點擊了enter,准備喝口水瀟灑一下,結果出現了一下錯誤(這也是我寫這篇博客的原因,要不都懶得記錄了)錯誤信息
看了下代碼錯誤信息,說是zlib.h找不到。找不到就給他安一個嘛。真是的安裝zlib
下載zlib-1.2.8.tar.gz
下載地址:http://www.zlib.net/
如圖:
紅色部分點擊
cd /tmp #首先進入到該下載包的目錄
tar zxvf zlib-1.2.8.tar.gz #解壓包
cd zlib-1.2.8 #進入到解壓的目錄
./configure --prefix=/usr/local/zlib
make; make install #編譯+安裝
1
再進行配置一下系統的文件,載入剛才編譯安裝的zlib生成的庫文件vi /etc/ld.so.conf.d/zlib.conf
加入如下內容後保存退出: /usr/local/zlib/lib也就是添加安裝目錄的文件路徑,庫文件。ldconfig 運行之後就會載入安裝的庫文件了。
OK,到這一步了,此時,重新在memcache的php擴展中執行make;make install命令如果看到以下信息,表示成功:
擴展安裝成功
三 配置php.ini文件
首先通過phpinfo函數,找到php.ini的路徑,我的是:/opt/lampp/etc/php.ini在其中添加如下內容:
修改extension_dir路徑:
extension_dir = 「/opt/lampp/lib/php/extensions/no-debug-non-zts-20121212/」
extension=memcache.so
[Memcache]
memcache.allow_failover = 1
memcache.max_failover_attempts=20
memcache.chunk_size =8192
然後重新啟動apache,再次通過phpinfo查看一下情況。如果有如下內容,表示配置成功:
信息
四 配置memcached伺服器
啟動memcached伺服器
memcached -d -m 10 -u root -l 127.0.0.1 -p 11211 -c 256 -P /tmp/memcached.pid參數說明:
-d選項是啟動一個守護進程,
-m是分配給Memcache使用的內存數量,單位是MB,我這里是10MB,-u是運行Memcache的用戶,我這里是root,
-l是監聽的伺服器IP地址,如果有多個地址的話,我這里指定了伺服器的IP地址127.0.0.1,-p是設置Memcache監聽的埠,我這里設置了11211,最好是1024以上的埠,-c選項是最大運行的並發連接數,默認是1024,我這里設置了256,按照你伺服器的負載量來設定,-P是設置保存Memcache的pid文件,我這里是保存在 /tmp/memcached.pid2. 結束memcached進行
kill cat /tmp/memcached.pid
3. 檢查memcached是否已經啟動
看到綠色框中內容,就表示完成
五 測試php的memcache擴展
<?php
$mem = new Memcache;
$mem->connect("192.168.12.201", 13001);
$mem->set('key','This is a test!', 0, 60);$val = $mem->get('key');
echo $val;
?>
寫在後面:大家有興趣可以將session改為使用memcache來保存。php自身使用文件的方式,不太好,動不動文件大小總和就上G了。
❸ 急救:請問怎麼在windows環境下安裝libevent和memcache - PHP進階討論
先下載個memcached.exe,然後打開cmd ,例如memcached.exe在d盤下,把memcached.exe拖進cmd對話框加-d install安裝,安裝完成後 路徑\memcached.exe -d start 啟動服務,php擴展文件ext裡面的php_memcache.dll如果沒有下一個放進去.在phpinfo();內查看memcache是否存在就可以了.
❹ 有沒有php寫的libevent的web伺服器
一、Swoole框架介紹
swoole是一套設計非常精巧,有效提高開發效率的PHP框架。Swoole有統一的唯一全局對象,類似於java的注冊樹,掛載了常用的一些對象,如資料庫、模板引擎、緩存系統、日誌系統、事件處理系統等。可以很方便地調用功能,快速開發。使用swoole框架,僅需配置一個config.php文件,在其他PHP文件中只需要require config.php文件,即可調用框架的所有功能。
swoole通過配置文件可以實現在輕松更換模塊驅動方式。比如資料庫連接,可以很方便得在Pdo MySQL MySQLi之間更換。緩存可以用filecache,也可以用dbcache,還可以用memcache。日誌可以用資料庫日誌,也可以用系統日誌或文件日誌。
❺ libevent監控文件描述符個數上有限制嗎
一.C10K的問題
C10K的問題在上個世紀90年代就被提出來了。大概的意思是當用戶數超過1萬時,很多設計不良好的網路服務程序性能都將急劇下降、甚至癱瘓。並且,這個問題並不能通過升級硬體設備解決,是操作系統固有的問題,也就是說,如果你的伺服器最高能支撐1000個並發,盡管你升級了計算能力高一倍的 cpu,內存再翻一番,硬碟轉速在快一倍,也無法支撐2000個並發。
經典的網路編程模型有4個:
1. Serve one client with each thread/process, and use blocking I/O。即對每個客戶都使用不同的線程或進程進行服務,在每個線程或進程中使用阻塞I/O。這是小程序和java常用的策略,對於互動式的應用也是常見的選擇,這種策略很能難滿足高性能程序的需求,好處是實現極其簡單,容易實現復雜的交互邏輯。我們常用的Apache、ftpd等都是這種工作。
2. Serve many clients with single thread, and use nonblocking I/O and readiness notification。即對所有的客戶使用單一一個線程或進程進行服務,在這個線程或進程里,採用非同步IO的策略。這是經典模型,優點在於實現較簡單,方便移植,也能提供足夠的性能;缺點在於無法充分利用多CPU的資源。
3. Serve many clients with each thread, and use nonblocking I/O and readiness notification 對經典模型2的簡單改進,仍然採用非同步IO的策略,但對所有的客戶使用多個線程或進程進行服務。缺點是容易在多線程並發上出bug,甚至某些OS不支持多線程進行readiness notification
4. Serve many clients with each thread, and use asynchronous I/O 在有AI/O支持的OS上,能提供相當高的性能。不過AI/O編程模型和經典模型差別相當大,基本上很難寫出一個框架同時支持AI/O和經典模型。這個模型主要是用於window平台上。
在linux上開發高性能的網路應用,只能選著第2、3種方式。考慮到復雜性,我們往往只採用第2種。下面就討論一下第二種模型。
我們知道,實現非同步IO一般是採用select 或poll來實現。Select 定義如下:
int select(int n, fd_set *rd_fds, fd_set *wr_fds, fd_set *ex_fds, struct timeval *timeout);
Poll 的介面如下:
int poll(struct pollfd *ufds, unsigned int nfds, int timeout);
然而 Select 和Poll 在連接數增加時,性能急劇下降。這有兩方面的原因:首先操作系統面對每次的select/poll 操作,都需要重新建立一個當前線程的關心事件列表,並把線程掛在這個復雜的等待隊列上,這是相當耗時的。其次,應用軟體在select/poll 返回後也需要對傳入的句柄列表做一次掃描來判斷哪些句柄是可用的,這也是很耗時的。這兩件事都是和並發數相關,而I/O 事件的密度也和並發數相關,導致CPU 佔用率和並發數近似成O(n2)的關系。
因為以上的原因,Unix 上開發了性能更高的epoll, kqueue, /dev/poll 這3個程序介面來解決上述問題。其中epoll 是linux 的方案,kqueue 是freebsd 的方案,/dev/poll 是最古老的Solaris 的方案,使用難度依次遞增。
簡單的說,這些api 做了兩件事:
1. 避免了每次調用select/poll 時kernel 分析參數建立事件等待結構的開銷,kernel 維護一個長期的事件關注列表,應用程序通過句柄修改這個列表和捕獲I/O 事件。
2. 避免了select/poll 返回後,應用程序掃描整個句柄表的開銷,Kernel 直接返回具體的事件列表給應用程序。
二. libevent庫
由於epoll, kqueue, /dev/poll每個介面都有自己的特點,程序移植非常困難,於是需要對這些介面進行封裝,以讓它們易於使用和移植,其中libevent庫就是其中之一。
按照libevent的官方網站,libevent庫提供了以下功能:當一個文件描述符的特定事件(如可讀,可寫或出錯)發生了,或一個定時事件發生了,libevent就會自動執行用戶指定的回調函數,來處理事件。目前,libevent已支持以下介面/dev/poll, kqueue(2), event ports, select(2), poll(2) 和 epoll(4)。Libevent的內部事件機制完全是基於所使用的介面的。因此libevent非常容易移植,也使它的擴展性非常容易。目前,libevent已在以下操作系統中編譯通過:Linux,BSD,Mac OS X,Solaris和Windows。
使用libevent庫進行開發非常簡單,也很容易在各種unix平台上移植。一個簡單的使用libevent庫的程序如下:
三.libevent庫的應用
Go2代理是一個大流量的代理應用,月流量近TB。其中圖片、flash、zip文件占總流量的絕大部分。為了減少流量成本,需要將部分進行分流。開始時,使用了傳統的php代理來分流,但Go2並發訪問極大,多進程架構的php無法承受,在虛擬主機vps上啟動數秒後就立即癱瘓。後改用 python的twisted網路架構,採用了twisted的非同步tcp通訊功能。運行一段時間後,發現twisted的非同步dns穩定性不太好,經常發生系統級的崩潰。最後,經過分析比較,決定採用libevent庫來做Go2 的分流代理應用。
Libevent庫支持非同步socket,支持非同步dns,並本身還帶了個簡單的http 伺服器。Go2 的分流代理應用就是使用了libevent庫的以上三個功能。
1、簡單的http 伺服器:實現的分類代理的用戶端的輸入,輸出管理。
2、非同步socket,實現了高並發性的用戶接入,和高並發性的目的伺服器訪問。
3、非同步dns,解決了dns查詢時的並發性和高效性。
❻ workerman運行環境的libevent怎麼安裝
centos系統安裝教程(適用於php環境是yum install安裝的情況)
1、命令行運行yum install php-devel php-pear libevent-devel
2、命令行運行pecl install channel://pecl.php.net/libevent-0.1.0
3、命令行運行echo extension=libevent.so > /etc/php.d/libevent.ini
debian/ubuntu系統安裝教程(適用於php環境是get-get install安裝的情況)
1、命令行運行 apt-get install php-pear php5-dev libevent-dev
2、命令行運行pecl install channel://pecl.php.net/libevent-0.1.0
3、命令行運行echo extension=libevent.so > /etc/php5/cli/conf.d/libevent.ini
編譯安裝
命令行運行
APT-GET:apt-get install php-pear php5-dev libevent-dev
YUM:yum install php-devel php-pear libevent-devel
從http://pecl.php.net/package/libevent 下載源碼解壓到你的php源碼ext目錄下,進到ext/libevent-x.x.x目錄,依次執行下面命令
① phpize
② ./configure
③ make
④ make install
⑤ 把so文件加入到php.ini去(如果不知到php.ini在哪裡,可以通過命令 php --ini 查找到)
❼ PHP Warning: PHP Startup: libevent: Unable to initialize mole 請問這是什麼問題該怎麼解決
我在php56w安裝完libevent之後報的錯 網上說了什麼版本不支持啥的 我都試過了 包都是兼容的 需要在 php.ini 配置文件中加入 extension = libevent.so 不要在最後加 我在最後加入是一直報錯的 後台換了位置 就沒有報錯了
❽ 編譯PHP時,報錯checking for libevent >= 1.4.11 install prefix... no configure: error: libevent >= 1
./configure --help看幫助
用./configure --with-libevent-dir=...來指定libevent路徑
❾ php libevent 什麼用
libevent 是一個強大的跨平台的事件通知庫,如果不想被多線程困擾,可以考慮這個平台,它從1.2.* 版本開始支持輕量級的http server 開發支持,隨後陸續還推出輕量級 DNS server、RPC server 開發支持,網路上目前可參考的代碼不多