[PHP]如何使用 flush() 跟 ob_flush()

比如說我們想要緩衝網頁資料,如利用 sleep() 這個函式,那我們不想要等整個 php 執行完畢才輸出畫面,那就是需要緩衝輸出,在 酷學園 的這篇 http://phorum.study-area.org/index.php/topic,52757.0.html 有討論到,所以我實際去測試一下,大概如下:
";
flush();
sleep(2);

for ($i=10; $i>0; $i--)
{
    echo $i . "
"; ob_flush(); flush(); sleep(1); } ob_end_flush(); ?>
我覺得相當不錯用,大家可以參考看看。酷學園那篇,我測試好像沒有這種效果,Orz,不知道我測試錯誤,還是啥的地方搞錯 http://blog.goalercn.com/blogview.asp?logID=348

[Linux] CentOS 5.1 安裝 Lighttpd + PHP5 + FastCgi + eaccelerator

昨天網站無緣無故被擋掉,原因是我的流量網站太大,囧,因為是架設 web site,測試一下效能,我發現 =http://httpd.apache.orgapache[/url] 沒辦法撐住流量跟線上人數,所以只好換成 =http://www.lighttpd.netLighttpd[/url] 發現效果不錯,所以又去安裝了 CentOS 版本,我是去參考底下這篇:Installing Lighttpd With PHP5 And MySQL Support On CentOS 5.0,這一篇我覺得寫的還ok,但是因為 Centos 如果你想用 yum 安裝 =http://www.lighttpd.netLighttpd[/url] 就要先裝 rpmforge-release package 這個東西,這樣才可以找到。 首先先看你的版本再來抓:
RHEL5 / CentOS-5 i386: http://packages.sw.be/rpmforge-release/rpmforge-release-0.3.6-1.el5.rf.i386.rpm x86_64: http://packages.sw.be/rpmforge-release/rpmforge-release-0.3.6-1.el5.rf.x86_64.rpm RHEL4 / CentOS-4 i386: http://packages.sw.be/rpmforge-release/rpmforge-release-0.3.6-1.el4.rf.i386.rpm x86_64: http://packages.sw.be/rpmforge-release/rpmforge-release-0.3.6-1.el4.rf.x86_64.rpm RHEL3 / CentOS-3 i386: http://packages.sw.be/rpmforge-release/rpmforge-release-0.3.6-1.el3.rf.i386.rpm x86_64: http://packages.sw.be/rpmforge-release/rpmforge-release-0.3.6-1.el3.rf.x86_64.rpm RHEL2.1 / CentOS-2 i386: http://packages.sw.be/rpmforge-release/rpmforge-release-0.3.6-1.el2.rf.i386.rpm
Continue reading “[Linux] CentOS 5.1 安裝 Lighttpd + PHP5 + FastCgi + eaccelerator”

[文件]Reverse Proxy 一些資料 for Apache Lighttpd Squid

最近都在找如何增加 WEB 效能的方式,大概找一下 Squid Reverse Proxy 跟 Apache Reverse Proxy,底下是一些文件,大概網路上找到的,整理一下 Apache2 as a Reverse Proxy ruby-on-rails-伺服器架設原理 R-Proxy – 使用Apache架設 使用 Reverse Proxy代理服務 Lighttpd as reverse proxy Reverse Proxy Using Squid

[轉貼] RoR:Ruby on Rails的部署方案選擇

我沒在玩 Ruby on Rails,但是底下這一篇我覺得寫的不錯,可以參考看看,裡面有介紹一下目前當紅 web daemon 的一些基本知識
RoR的部署方式從架構上來說分為前端和後端: 一、前端 前端的作用就是處理靜態資源,將動態請求分發到後端,有時候也帶有一些額外的功能,例如對特定URL進行rewrite和redirect,對HTTP輸出進行gzip壓縮等等。 前端目前已知的可以選擇apache, lighttpd, litespeed, nginx, haproxy 1、apache2.2 apache是全球市場佔有率最高的web server,超過全球互聯網網站50%的網站都用apache。apache2.2 + mod_proxy_balancer是一個非常流行,非常穩定的方案。 使用apache2.2唯一的問題就是apache的性能和後面那些輕量級web server相比,差太遠了。一方面在處理靜態請求方面apache要比lighttpd慢3-5倍,內存消耗和CPU消耗也高出一個數量級,另一方面 mod_proxy_balancer的分發性能也不高,比haproxy差很遠。 2、lighttpd lighttpd 是一個輕量級高性能web server,一個在MySQL Inc工作的德國人寫的。性能很好,內存和CPU資源消耗很低,支持絕大多數apache的功能,是apache的絕好替代者。目前lighttpd已經上升到全球互聯網第四大web server,市場佔有率僅此於apache,IIS和Sun。 lighttpd唯一的問題是proxy功能不完善,因此不適合搭配mongrel來使用。lighttpd下一個版本1.5.0的proxy模塊重寫過了,將會解決這個問題。 3、litespeed 和 lighttpd差不多,商業產品,收費的。比lighttpd來說,多一個web管理界面,不用寫配置文件了。litespeed專門為單機運行的 RoR開發了一個lsapi協議,號稱性能最好,比httpd和fcgi都要好。他的proxy功能比lighttpd完善。 litespeed 的缺點我卻認為恰恰是這個lsapi。因為lsapi不是web server啟動的時候啟動固定數目的ruby進程,而是根據請求繁忙程度,動態創建和銷毀ruby進程,貌似節省資源,實則和apache2.2進程模型一樣,留下很大的黑客攻擊漏洞。只要黑客瞬時發起大量動態請求,就會讓服務器忙於創建ruby進程而導致CPU資源耗盡,失去響應。 當然,litespeed也支持httpd和fcgi,這個和lighttpd用法一樣的,到沒有這種問題。 4、nginx 一個俄國人開發的輕量級高性能web server,特點是做proxy性能很好,因此被推薦取代apache2.2的mod_proxy_balancer,來和mongrel cluster搭配。其他方面和lighttpd到差不多。 要說缺點,可能就是發展的時間比較短,至今沒有正式版本,還是beta版。沒有經過足夠網站的驗證。 5、haproxy 就是一個純粹的高性能proxy,不處理靜態資源的,所有請求統統分發到後端。 二、後端 後端就是跑ruby進程,處理RoR動態請求了。運行後端ruby進程有兩種方式: 1、fcgi方式 準確的說,不能叫做fcgi方式,其實就是啟動一個ruby進程,讓這個ruby進程監聽一個tcp/unix socket,以fcgi協議和前端通訊。所以fcgi不是指ruby進程的運行方式,而是ruby進程使用的通訊協議。這就好比你tomcat可以用 http也可以使用ajp通訊一樣,tomcat自己的運行方式都一樣的,只是通訊方式不一樣。 fcgi方式啟動ruby進程,可以使用lighttpd帶的一個spawn-fcgi工具來啟動(JavaEye目前採用這種方式)。 值得一提的是,apache2.2的mod_fastcgi的方式和上面還不太一樣,由apache動態創建fcgi進程和管理fcgi進程,這種方式和 litespeed的lsapi面臨的問題是一樣的,此外apache的mod_fastcgi自己也有很多嚴重的bug,是一種很糟糕的部署方式。這種糟糕的部署方式也敗壞了fcgi的名聲。 fastcgi只是一種協議,雖然古老,但並不是不好用,http協議也很古老。沒有必要因為 apache的mod_fastcgi的運行方式的問題而連帶把fastcgi都一同否定了。fastcgi只是一個協議(程序之間的語言),是 apache的mod_fastcgi這個模塊有問題。打個比方,有個人英語水平很差,和你用英語對話,總是結結巴巴的,那你說是英語(fastcgi) 這種語言有問題呢?還是和你對話的這個人 (mod_fastcgi)有問題呢? 2、http方式 也就是用mongrel去跑ruby進程,由於mongrel實際上已經是一個簡單的http server,所以也可以單獨作為web server使用。mongrel現在越來越受歡迎了。 用fcgi方式還是http方式,我個人覺得區別不大,關鍵還是看應用的場合,一般而言,推薦的搭配是: lighttpd + fcgi 或者 nginx +mongrel,而apache因為性能差距,而不被推薦。 JavaEye為什麼用lighttpd + fcgi呢?原因如下: 1) lighttpd發展了好幾年了,市場佔有率也相當高,是一個經過實踐檢驗的server,它的文檔也很全;而nginx還沒有經過足夠的市場檢驗,文檔也很缺乏 2) JavaEye的ruby進程和web server在一台機器上面跑,通過unix socket使用fcgi協議通訊可以避免tcp的網絡開銷,其通訊速度比使用tcp socket使用http協議通訊要快一些。 什麼場合使用haproxy? 大規模部署,例如你的RoR應用到十幾台服務器上面去,你用haproxy會更好,可以方便的添加刪除應用服務器節點,proxy性能更好。
資料來源: Csdn – http://news.csdn.net/n/20071229/112274.html

[FreeBSD] Lighttpd + PHP + mod_proxy + FastCGI

最近一直在玩 Lighttpd 這一套 web 的 daemon,我覺得這一套還蠻好用的,不像 Apache 掛載這麼多 module 結果吃還蠻大的資源,加上 Apache 預設跑 MPM prefork 所以如果大型網站大概就會掛掉,線上人數一堆,就會快撐不住了,所以用 MPM worker 或者是 MPM Event,然後 Lighttpd 本身還支援 mod_rewrite 的功能,可以參考我之前寫的 [FreeBSD]Lighttpd + php5 + 解決 wordpress Permalinks 問題,不過最近遇到一個很奇怪問題,那就是 Lighttpd 會自己掛點,但是我看 message 跟 error log 底下是:
2008-07-10 09:08:31: (server.c.1258) NOTE: a request for /wp-includes/js/scriptaculous/effects.js?ver=1.8.0 timed out after writing 32991 bytes. We waited 360 seconds. If this a problem increase server.max-write-idle
Continue reading “[FreeBSD] Lighttpd + PHP + mod_proxy + FastCGI”

[FreeBSD]解決 lighttpd log Permission denied 問題

今天早上伺服器 lighttpd 沒有跑起來,發現是因為沒有寫入 lighttpd.access.log 的權限,所以造成不能啟動
2008-07-04 08:37:15: (mod_accesslog.c.535) opening access-log failed: Permission denied /var/log/lighttpd/lighttpd.access.log
目前的解法大概就是不能去改 /var/log 這個資料夾權限,所以我在 /var/log 底下新增 lighttpd 這個資料夾 Continue reading “[FreeBSD]解決 lighttpd log Permission denied 問題”

[高雄美食] [推薦]高雄夢時代 Dream Mall 一樓 Cold Stone 冰品

Click to view full size image 我來推薦一下高雄的美食吧,上禮拜去高雄夢時代逛逛,發現一樓的Cold Stone 冰品店相當多人,結果想說進去試試看吧,這一間裝潢的很不錯喔,雖然說不會很安靜,可是工作人員服務的態度好的不得了,所以一定要推薦給各位朋友來去吃,那這尖兵品店,全部都是純手工製作的冰喔,雖然說價位有點高,可是偶而吃一次其實還不賴說,底下就是大概介紹一下冰淇淋的圖片
Cold Stone冰淇淋專賣店 高雄夢時代門市 ADD:高雄市前鎮區中華五路789號1樓 TEL:07-9703588
Continue reading “[高雄美食] [推薦]高雄夢時代 Dream Mall 一樓 Cold Stone 冰品”

[FreeBSD]Lighttpd + php5 + 解決 wordpress Permalinks mod_write

今天轉換跑道了,最近玩 Apache 玩的很不順,因為只要線上人數一多,就會吃很多記憶體,導致必須重新開 Apache,所以今天來玩看看 lighttpd試試看,看看結果如何,其實轉換到 lighttpd 需要注意很多事情,那就是 Lighttpd 並不支援 .htaccess 檔案,所以 mode_rewrite 功能要設定到 Lighttpd.conf 裡面,然後也去找看看 Lighttpd 的 virtual host 的寫法,然後還有一點就是 wordpress 的 Permalinks 的問題,算是今天都解決了,底下來寫一下作法: Continue reading “[FreeBSD]Lighttpd + php5 + 解決 wordpress Permalinks mod_write”