你不了解PHP的10件事情

2021-08-30 14:44:57 字數 1339 閱讀 3096

這是2023年老外發的一篇文章,轉過來品一品

1. 使用 ip2long() 和 long2ip() 函式來把 ip 位址轉化成整型儲存到資料庫裡。這種方法把儲存空間降到了接近四分之一(char(15) 的 15 個位元組對整形的 4 個位元組),計算乙個特定的位址是不是在乙個區段內頁更簡單了,而且加快了搜尋和排序的速度(雖然有時僅僅是快了一點)。

想起了之前客齊集面試的一道題,問的是如果有100萬個ip位址,如何儲存能夠比較節約空間。當時想了近半個小時,最後還是投降,今天才知道,原來這兩個函式就可以搞定啦。

我還沒有見過哪個驗證系統會用到這個,要麼不驗證,要麼直接發郵箱

3.如果你使用的是 php  5 和 mysql 4.1 或者更高的版本,考慮拋棄 mysql_* 系列函式改用改進版的 mysqli_* 系列函式。乙個很好的功能就是你可以使用預處理語句,如果你在維護乙個資料庫密集型站點,這個功能能夠加快查詢速度。一些評估分數。

我會選擇pdo

4.學會愛上三元運算子。

不是很複雜的話,我會用

不喜歡pear

7.使用 error_reporting(0) 函式來防止使用者看到潛在的敏感錯誤資訊。]在理想情況下,發布伺服器應該在 php .ini 裡完全禁止。但是如果你用的是乙個共享的 web 伺服器的話,你沒有自己的 php .ini 檔案,那麼這種情況下你最好的選擇就是在所有指令碼的第一行前加上 error_reporting(0);(或者使用 require_once() 方法)。這就能夠在出錯的時候完全遮蔽敏感的 sql 查詢語句和路徑名。

8.在網資料庫中儲存很大的字串之前使用 gzcompress() 和 gzuncompress() 來顯式的壓縮/解壓字串。這個 php  內建函式使用 gzip 演算法,可以壓縮普通文字達 90%。在我每次要讀寫 blob 型別的字段的時候都使用這些函式。唯一額例外就是當我需要全文檢索的時候。

以前還真不知道,呵呵

9. 通過「引用」傳遞引數的方法從乙個函式中得到多個返回值。就像三元運算子一樣,大部分受過正式程式設計訓練的程式設計師都知道這個技巧。但是那些 html 背景大於 pascal 背景的程式設計師都或多或少的有過這樣的疑問「在僅能使用一次 return 的情況下,從乙個函式裡返回多個值?」答案就是在變數前加上乙個 「&」 符號,通過「引用」傳遞而非「值」傳遞。

返回乙個陣列不就ok啦,不明白為什麼要引用,引用只是改變自身的值,對於返回多個值好像沒有直接的聯絡吧

10.完全理解「魔術引號」和 sql 注入的危險性。我希望閱讀到這裡的開發者都已經很對 sql 注入和了解了。不過我還是把這條列在這裡,是因為這個確實有點難以理解。如果你還沒有聽說過這種說法,那麼把今天剩下的時間都用來 google、閱讀吧。

恩,當初可有不少的開源系統倒在了register_globals下面

你不了解PHP的10件事情

看到有人翻譯的 10 things you probably didn t know about php 發現在此次之前2 8兩條並不知道,1 3雖然熟知但是去沒有實際應用。1.使用 ip2long 和 long2ip 函式來把 ip 位址轉化成整型儲存到資料庫裡。這種方法把儲存空間降到了接近四分之...

你不了解PHP的10件事情

1.使用 ip2long 和 long2ip 函式來把 ip 位址轉化成整型儲存到資料庫裡。這種方法把儲存空間降到了接近四分之一 char 15 的 15 個位元組對整形的 4 個位元組 計算乙個特定的位址是不是在乙個區段內頁更簡單了,而且加快了搜尋和排序的速度 雖然有時僅僅是快了一點 3.如果你使...

你不了解PHP的10件事情!

1.使用 ip2long 和 long2ip 函式來把 ip 位址轉化成整型儲存到資料庫裡。這種方法把儲存空間降到了接近四分之一 char 15 的 15 個位元組對整形的 4 個位元組 計算乙個特定的位址是不是在乙個區段內頁更簡單了,而且加快了搜尋和排序的速度 雖然有時僅僅是快了一點 joeuse...