欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

PHP一些有意思的小區(qū)別

 更新時間:2006年12月06日 00:00:00   作者:  
單引號'和雙引號"的區(qū)別: 
首先是單引號要比雙引號執(zhí)行效率要高,因為雙引號會對內(nèi)容進行預(yù)處理。 
例如:'$value' 輸出字符 $value ; "$value"輸出變量$value的值。 

char和varchar的區(qū)別: 
char是定長而varchar是變長,char的主要特點是存儲方式預(yù)分配,varchar當它的數(shù)據(jù)長度發(fā)生變化時會影響其存儲的頁分配。 
char與varchar2是一對矛盾的統(tǒng)一體,兩者是互補的關(guān)系.  
varchar2比char節(jié)省空間,在效率上比 char會稍微差一些,即要想獲得效率,就必須犧牲一定的空間,這也就是我們在數(shù)據(jù)庫設(shè)計上常說的‘以空間換效率'。  
varchar2 雖然比 char節(jié)省空間,但是如果一個varchar2列經(jīng)常被修改,而且每次被修改的數(shù)據(jù)的長度不同,這會引起‘行遷移'(Row Migration)現(xiàn)象,而這造成多余的I/O,是數(shù)據(jù)庫設(shè)計和調(diào)整中要盡力避免的,在這種情況下用 char代替varchar2會更好一些。 

mysql_connect和mysql_pconnect的區(qū)別 
引用exceed php club論壇上的朋友原話: 
php中mysql_pconnect()的實現(xiàn)方式:  
其實mysql_pconnect()本身并沒有做太多的處理, 它唯一做的只是在php運行結(jié)束后不主動close掉mysql的連接.  
mysql_pconnect()與此同時mysql_connect()的區(qū)別: 
cgi方式下: 
在php經(jīng)cgi方式運行時pconnect和connect是基本沒有區(qū)別的, 因為cgi方式是每一個php訪問起一個進程, 訪問結(jié)束后進程也就結(jié)束了, 資源也全釋放了.  
apache模塊方式下: 
區(qū)別在于當php以apache模塊方式運行時, 由于apache有使用進程池, 一個httpd進程結(jié)束后會被放回進程池, 這也就使得用pconnect打開的的那個mysql連接資源不被釋放, 于是有下一個連接請求時就可以被復(fù)用. 
這就使得在apache并發(fā)訪問量不大的時候, 由于使用了pconnect, php節(jié)省了反復(fù)連接db的時間, 使得訪問速度加快. 這應(yīng)該是比較好理解的. 
但是在apache并發(fā)訪問量大的時候, 如果使用pconnect, 會由于之前的一些httpd進程占用的mysql連接沒有close, 則可能會因為mysql已經(jīng)達到最大連接著, 使得之后的一些請求永遠得不到滿足. 
例如:  
若mysql最大連接數(shù)設(shè)為500, 而apache的最大同時訪問數(shù)設(shè)為2000 
假設(shè)所有訪問都會要求訪問db, 而且操作時間會比較長 
當前500個請求的httpd都沒有結(jié)束的時候...之后的httd進程都是無法連接到mysql的(因已經(jīng)達到mysql最大連接數(shù)). 只有當前500個httpd進程結(jié)束或被復(fù)用才可以連接得到了mysql. 
其實這個也很好解釋了xgy_p的測試中若操作比較簡單, pconnect比connect效率高很多, 而且跟使用jsp的連接池的速度比較接近. 因為這個時候httpd進程可以不斷的給復(fù)用. 
而 當DB操作復(fù)雜, 耗時較長時, 因httpd會fork很多并發(fā)進程處理, 而先產(chǎn)生的httpd進程不釋放db連接, 使得后產(chǎn)生的httpd進程無法連上db. 因為這樣沒有復(fù)用其它httpd進程的mysql連接. 于是會就產(chǎn)生很多連接超時, 像一開始的1000個并發(fā)連接測試說幾乎都是連接超時就是這個原因. 
--- 
(反進來看jsp用的如果是純粹的db連接池, 則不會有因為達到mysql連接上限而連不上的問題, 因為jsp的連接池會使得可以等待其它連接使用完畢并復(fù)用. ) 
因此在并發(fā)訪問量不高時,使用pconnect可以簡單提高訪問速度, 但在并發(fā)量增大后, 是否再使用pconnect就要看程序員的選擇了.. 
就我個人認為, php現(xiàn)在對mysql的連接并沒有真正用到連接池, pconnect也只是相當于借了apache的進程池來用, 所以在并發(fā)訪問量大的時候pconnect并不能很好的提高訪問DB效率. 在這一點上. php的確比不上jsp. 
就目前的這種情況, 如果并發(fā)量大的話, 我個人建議最好還用mysql_connect.  

include和require的區(qū)別 
以下取自phpchina.cn 
php的require()性能與include()相類似。不同之處在于,對include()來說,在include()執(zhí)行時文件每次都要進行讀 取和評估;而對于require()來說,文件只處理一次(實際上,文件內(nèi)容替換了require()語句)。這就意味著如果有包含這些指令之一的代碼和 可能執(zhí)行多次的代碼,則使用require()效率比較高。另一方面,如果每次執(zhí)行代碼時相讀取不同的文件,或者有通過一組文件疊代的循環(huán),就使用 include(),因為可以給想要包括的文件名設(shè)置一個變量,當參數(shù)為include()時使用這個變量。 

include 在執(zhí)行時,如果 include 進來的文件發(fā)生錯誤的話,不會立刻停止;而 require 則會立刻終止程序,不再往下執(zhí)行。 
include 可以用在循環(huán); require 不行。 

以下取自ricky 
1,require是無條件包含也就是如果一個流程里加入require,無論條件成立與否都會先執(zhí)行require 
這個已經(jīng)不適用了,因為require 可以包含變量指向的文件如 

if($a = 1){ 
$file = '1.php'; 
}else{ 
$file = '2.php'; 

require($file); 

2,包含文件不存在或者語法錯誤的時候require是致命的, include不是 

3,include有返回值,而require沒有(可能因為如此require的速度比include快) 
$login = include('test.php'); 
if(!empty($login)){ 
echo "文件包含成功"; 
}else{ 
echo "文件包含失敗"; 


引用文件的方法有兩種:require 及 include。兩種方式提供不同的使用彈性。 

require 的使用方法如 require("MyRequireFile.php"); 。這個函數(shù)通常放在 PHP 程序的最前面,PHP 程序在執(zhí)行前,就會先讀入 require 所指定引入的文件,使它變成 PHP 程序網(wǎng)頁的一部份。常用的函數(shù),亦可以這個方法將它引入網(wǎng)頁中。 

include 使用方法如 include("MyIncludeFile.php"); 。這個函數(shù)一般是放在流程控制的處理部分中。PHP 程序網(wǎng)頁在讀到 include 的文件時,才將它讀進來。這種方式,可以把程序執(zhí)行時的流程簡單化。 

isset()和empty()的區(qū)別   
兩者都是測試變量用的,但是isset()是測試變量是否被賦值,而empty()是測試一個已經(jīng)被賦值的變量是否為空。   

如果一個變量沒被賦值就引用在php里是被允許的,但會有notice提示,如果一個變量被賦空值,$foo=""或者$foo=0或者 $foo=false,那么empty($foo)返回真,isset($foo)也返回真,就是說賦空值不會注銷一個變量。   
    
要注銷一個變量,可以用 unset($foo)或者$foo=NULL

相關(guān)文章

  • PHP中error_reporting()函數(shù)的用法(修改PHP屏蔽錯誤)

    PHP中error_reporting()函數(shù)的用法(修改PHP屏蔽錯誤)

    一般在默認的普通PHP文件中輸出一個未定義聲明的變量是不會報錯誤的,但在codeigniter框架下卻要報錯誤,這對于想集成 添加 和 修改 頁面于一體的”懶人”很不方便,由于是初學(xué)者開始還想怎么在代碼中屏蔽這一錯誤提示呢.甚至用到了@,但聽很多人都說@會大大降低性能.
    2011-07-07
  • php處理json格式數(shù)據(jù)經(jīng)典案例總結(jié)

    php處理json格式數(shù)據(jù)經(jīng)典案例總結(jié)

    這篇文章主要介紹了php處理json格式數(shù)據(jù)的方法,詳細講述了json格式數(shù)據(jù)的概念與用法,并結(jié)合經(jīng)典案例總結(jié)分析了php操作json格式數(shù)據(jù)的常用技巧,需要的朋友可以參考下
    2016-05-05
  • PHPMailer發(fā)送郵件功能實現(xiàn)流程

    PHPMailer發(fā)送郵件功能實現(xiàn)流程

    隨著企業(yè)化的管理越來越規(guī)范,各種項目管理系統(tǒng)中,都需要加入到郵件實時通知功能,所以在項目中如何整合發(fā)郵件功能,其實也是很重要的一點。本文為大家介紹了PHP實現(xiàn)郵件實時通知功能的示例代碼,需要的可以參考一下
    2022-12-12
  • php中通過curl檢測頁面是否被百度收錄

    php中通過curl檢測頁面是否被百度收錄

    最近要對網(wǎng)站做個整理,需要檢測網(wǎng)站內(nèi)哪些頁面沒有被百度搜索引擎收錄從而進行相關(guān)的調(diào)整。由于使用site命令一條條的去看實在是看不過來,就想到了使用php程序來批量處理一下
    2013-09-09
  • 關(guān)于file_get_contents返回為空或函數(shù)不可用的解決方案

    關(guān)于file_get_contents返回為空或函數(shù)不可用的解決方案

    本篇文章是對file_get_contents返回為空或函數(shù)不可用的解決方案進行了詳細的分析介紹,需要的朋友參考下
    2013-06-06
  • PHPLog php 程序調(diào)試追蹤工具

    PHPLog php 程序調(diào)試追蹤工具

    本文將為你介紹一個調(diào)試工具,它可以替代echo,print_r,var_dump等系統(tǒng)函數(shù),還具有調(diào)用棧及參數(shù)追蹤功能. 簡言之,它是debug_backtrace的web版本.
    2009-09-09
  • php基于jquery的ajax技術(shù)傳遞json數(shù)據(jù)簡單實例

    php基于jquery的ajax技術(shù)傳遞json數(shù)據(jù)簡單實例

    這篇文章主要介紹了php基于jquery的ajax技術(shù)傳遞json數(shù)據(jù)方法,以完整實例形式分析了PHP基于jQuery的ajax無刷新提交數(shù)據(jù)實現(xiàn)方法,非常簡單易懂,需要的朋友可以參考下
    2016-04-04
  • php使用GD庫創(chuàng)建圖片縮略圖的方法

    php使用GD庫創(chuàng)建圖片縮略圖的方法

    這篇文章主要介紹了php使用GD庫創(chuàng)建圖片縮略圖的方法,涉及php使用GD庫操作圖片的相關(guān)技巧,需要的朋友可以參考下
    2015-06-06
  • php json相關(guān)函數(shù)用法示例

    php json相關(guān)函數(shù)用法示例

    這篇文章主要介紹了php json相關(guān)函數(shù)用法,列舉了json_encode、json_decode及json_last_error的功能,并實例分析了json_encode與json_decode函數(shù)的具體使用技巧,需要的朋友可以參考下
    2017-03-03
  • php多進程并發(fā)編程防止出現(xiàn)僵尸進程的方法分析

    php多進程并發(fā)編程防止出現(xiàn)僵尸進程的方法分析

    這篇文章主要介紹了php多進程并發(fā)編程防止出現(xiàn)僵尸進程的方法,結(jié)合具體實例形式總結(jié)分析了php多進程并發(fā)編程防止出現(xiàn)僵尸進程相關(guān)操作技巧與注意事項,需要的朋友可以參考下
    2020-02-02

最新評論