生活就像一個圈,來來回回…
Posts tagged Fun
PHP ob_start() 介紹
三月 1st
用PHP的ob_start();控制您的瀏覽器cache!
Output Control 函數可以讓你自由控制腳本中數據的輸出。它非常地有用,特別是對于:當你想在數據已經輸出后,再輸出文件頭的情況。輸出控制函數不對使用 header() 或 setcookie(), 發送的文件頭信息產生影響,只對那些類似于 echo() 和 PHP 代碼的數據塊有作用。
我們先舉一個簡單的例子,讓大家對Output Control有一個大致的印象:
Example 1.
<?php
ob_start(); //打開緩沖區
echo \"Hellon\"; //輸出
header("location:index.php"); //把瀏覽器重定向到index.php
ob_end_flush();//輸出全部內容到瀏覽器
?>
所有對 header()函數有了解的人都知道,這個函數會發送一段文件頭給瀏覽器,但是如果在使用這個函數之前已經有了任何輸出(包括空輸出,比如空格,回車和換行)就會提示出錯。如果我們去掉第一行的ob_start(),再執行此程序,我們會發現得到了一條錯誤提示:"Header had all ready send by"!但是加上ob_start,就不會提示出錯,原因是當打開了緩沖區,echo后面的字符不會輸出到瀏覽器,而是保留在服務器,直到你使用 flush或者ob_end_flush才會輸出,所以并不會有任何文件頭輸出的錯誤!
PHP中5個常用的系統常數
二月 25th
PHP程式撰寫中有5個常用的常數,這些常數可以快速的幫助程式寫的人從中取得需要的資訊內容,我將這5個常數整理如下:
1. __LINE__ 顯示程式文件中的該行程式行號。
2. __FILE__ 程式檔的完整路徑和檔案名,如果用在於 include的外部檔案中,則返回被include的檔案名。
3. __FUNCTION__ 執行的函數名稱,自 PHP 5 起本常數返回該函數被定義時的名字(區分大小寫)。
4. __CLASS__ 執行的類別名稱,自 PHP 5 起本常數返回該類被定義時的名字(區分大小寫)。
5. __METHOD__ 執行的類別方法名稱,返回該方法被定義時的名字(區分大小寫)。
我為什麼不使用session
一月 28th
在考慮session的問題上,我最終放鍥了session:
1、原本的session是使用文件來管理的。文件繫統的好壞直接影響session的性能,尤其當有幾K人同時在線的時候,尤其突出。解決方法有兩個:數據庫和文件(使用哈希路徑)。
2、原有session的擴展性和可控制性不好。不利於結合我現有的繫統。
3、在選用數據庫的時候,我並沒有選擇sqlite,上次我測試sqlite效率在win xp上效率沒有想象中的好。
最後我選擇了myql的heap表來處理session,並且把session處理和online在線用戶統計結合起來。
下麵給出代碼為我的一個實例(沒提供其他的細節了,俱體使用要相應修改)
API的設計技巧
一月 25th
API Design Tips(API的設計技巧)
- Naming is everything(命名就是一切)
- The point is to reduce complexity(其目的是為了降低複雜性)
- Eschew unnecessary side effects(避開不必要的副作用)
- Use Inversion of Control (IoC) to handle necessary side effects(使用控制反轉(IoC)的處理必要的副作用)
- Use events for the bulk of your IoC(使用事件的大部分你的IoC)
- Use Interfaces everywhere(到處使用接口)
- Use Interfaces that cover everything you need, but not more and not less(使用的界面,覆蓋你需要的一切,但不多而不是更少)
- Don’t make your own gravity(不要讓自己的重力)
- return all of your results from the function call(回到您的所有結果的函數調用) More >
2009年十大之美國IT行業愚蠢行為
一月 24th