亚洲av成人无遮挡网站在线观看,少妇性bbb搡bbb爽爽爽,亚洲av日韩精品久久久久久,兔费看少妇性l交大片免费,无码少妇一区二区三区

  免費(fèi)注冊(cè) 查看新帖 |

Chinaunix

  平臺(tái) 論壇 博客 文庫(kù)
最近訪問(wèn)板塊 發(fā)新帖
查看: 39938 | 回復(fù): 1
上一主題 下一主題

PHP 中一些易混淆的概念 [復(fù)制鏈接]

論壇徽章:
0
跳轉(zhuǎn)到指定樓層
1 [收藏(0)] [報(bào)告]
發(fā)表于 2008-01-26 21:28 |只看該作者 |倒序?yàn)g覽
單引號(hào)'和雙引號(hào)"的區(qū)別
  首先是單引號(hào)要比雙引號(hào)執(zhí)行效率要高,因?yàn)殡p引號(hào)會(huì)對(duì)內(nèi)容進(jìn)行預(yù)處理。例如:'$value' 輸出字符 $value ,"$value"輸出變量$value的值。
  char和varchar的區(qū)別
  char是定長(zhǎng)而varchar是變長(zhǎng),char的主要特點(diǎn)是存儲(chǔ)方式預(yù)分配,varchar當(dāng)它的數(shù)據(jù)長(zhǎng)度發(fā)生變化時(shí)會(huì)影響其存儲(chǔ)的頁(yè)分配。
  char與varchar2是一對(duì)矛盾的統(tǒng)一體,兩者是互補(bǔ)的關(guān)系。varchar2比char節(jié)省空間,在效率上比char會(huì)稍微差一些,即要想獲得效率,就必須犧牲一定的空間,這也就是我們?cè)跀?shù)據(jù)庫(kù)設(shè)計(jì)上常說(shuō)的“以空間換效率”。
  varchar2雖然比char節(jié)省空間,但是如果一個(gè)varchar2列經(jīng)常被修改,而且每次被修改的數(shù)據(jù)的長(zhǎng)度不同,這會(huì)引起“行遷移(Row Migration)”現(xiàn)象,而這造成多余的I/O,是數(shù)據(jù)庫(kù)設(shè)計(jì)和調(diào)整中要盡力避免的,在這種情況下用char代替varchar2會(huì)更好一些。
  mysql_connect和mysql_pconnect的區(qū)別
  引用exceed php club論壇上的朋友原話:
  php中mysql_pconnect()的實(shí)現(xiàn)方式:其實(shí)mysql_pconnect()本身并沒(méi)有做太多的處理,它唯一做的只是在php運(yùn)行結(jié)束后不主動(dòng)close掉mysql的連接。mysql_pconnect()與mysql_connect()的區(qū)別包括:
  cgi方式下:在php經(jīng)cgi方式運(yùn)行時(shí)pconnect和connect是基本沒(méi)有區(qū)別的,因?yàn)閏gi方式是每一個(gè)php訪問(wèn)起一個(gè)進(jìn)程,訪問(wèn)結(jié)束后進(jìn)程也就結(jié)束了,資源也全釋放了。
  apache模塊方式下:區(qū)別在于當(dāng)php以apache模塊方式運(yùn)行時(shí),由于apache有使用進(jìn)程池,一個(gè)httpd進(jìn)程結(jié)束后會(huì)被放回進(jìn)程池,這也就使得用pconnect打開(kāi)的的那個(gè)mysql連接資源不被釋放,于是有下一個(gè)連接請(qǐng)求時(shí)就可以被復(fù)用。這就使得在apache并發(fā)訪問(wèn)量不大的時(shí)候,由于使用了pconnect,php節(jié)省了反復(fù)連接db的時(shí)間,使得訪問(wèn)速度加快。這應(yīng)該是比較好理解的。但是在apache并發(fā)訪問(wèn)量大的時(shí)候,如果使用pconnect,會(huì)由于之前的一些httpd進(jìn)程占用的mysql連接沒(méi)有close,則可能會(huì)因?yàn)閙ysql已經(jīng)達(dá)到最大連接著,使得之后的一些請(qǐng)求永遠(yuǎn)得不到滿足。
  例如:若mysql最大連接數(shù)設(shè)為500,而apache的最大同時(shí)訪問(wèn)數(shù)設(shè)為2000,假設(shè)所有訪問(wèn)都會(huì)要求訪問(wèn)db,而且操作時(shí)間會(huì)比較長(zhǎng)。當(dāng)前500個(gè)請(qǐng)求的httpd都沒(méi)有結(jié)束的時(shí)候,之后的httd進(jìn)程都是無(wú)法連接到mysql的(因已經(jīng)達(dá)到mysql最大連接數(shù)),只有當(dāng)前500個(gè)httpd進(jìn)程結(jié)束或被復(fù)用才可以連接得到了mysql。
  其實(shí)這個(gè)也很好解釋了xgy_p的測(cè)試中若操作比較簡(jiǎn)單,pconnect比connect效率高很多,而且跟使用jsp的連接池的速度比較接近。因?yàn)檫@個(gè)時(shí)候httpd進(jìn)程可以不斷的給復(fù)用。而當(dāng)DB操作復(fù)雜,耗時(shí)較長(zhǎng)時(shí),因httpd會(huì)fork很多并發(fā)進(jìn)程處理,而先產(chǎn)生的httpd進(jìn)程不釋放db連接,使得后產(chǎn)生的httpd進(jìn)程無(wú)法連上db,因?yàn)檫@樣沒(méi)有復(fù)用其它httpd進(jìn)程的mysql連接,于是會(huì)就產(chǎn)生很多連接超時(shí),像一開(kāi)始的1000個(gè)并發(fā)連接測(cè)試說(shuō)幾乎都是連接超時(shí)就是這個(gè)原因。(反過(guò)來(lái)看jsp用的如果是純粹的db連接池,則不會(huì)有因?yàn)檫_(dá)到mysql連接上限而連不上的問(wèn)題,因?yàn)閖sp的連接池會(huì)使得可以等待其它連接使用完畢并復(fù)用。)
  因此在并發(fā)訪問(wèn)量不高時(shí),使用pconnect可以簡(jiǎn)單提高訪問(wèn)速度,但在并發(fā)量增大后,是否再使用pconnect就要看程序員的選擇了。就我個(gè)人認(rèn)為,php現(xiàn)在對(duì)mysql的連接并沒(méi)有真正用到連接池,pconnect也只是相當(dāng)于借了apache的進(jìn)程池來(lái)用,所以在并發(fā)訪問(wèn)量大的時(shí)候pconnect并不能很好的提高訪問(wèn)DB效率。在這一點(diǎn)上,php的確比不上jsp,就目前的這種情況,如果并發(fā)量大的話,我個(gè)人建議最好還用mysql_connect。
  include和require的區(qū)別
  以下取自phpchina.cn
  php的require()性能與include()相類(lèi)似。不同之處在于,對(duì)include()來(lái)說(shuō),在include()執(zhí)行時(shí)文件每次都要進(jìn)行讀取和評(píng)估;而對(duì)于require()來(lái)說(shuō),文件只處理一次(實(shí)際上,文件內(nèi)容替換了require()語(yǔ)句)。這就意味著如果有包含這些指令之一的代碼和 可能執(zhí)行多次的代碼,則使用require()效率比較高。另一方面,如果每次執(zhí)行代碼時(shí)相讀取不同的文件,或者有通過(guò)一組文件疊代的循環(huán),就使用include(),因?yàn)榭梢越o想要包括的文件名設(shè)置一個(gè)變量,當(dāng)參數(shù)為include()時(shí)使用這個(gè)變量。
  include在執(zhí)行時(shí),如果include進(jìn)來(lái)的文件發(fā)生錯(cuò)誤的話,不會(huì)立刻停止;而require則會(huì)立刻終止程序,不再往下執(zhí)行。include可以用在循環(huán);require不行。
  以下取自ricky
  1、require是無(wú)條件包含也就是如果一個(gè)流程里加入require,無(wú)論條件成立與否都會(huì)先執(zhí)行require。這個(gè)已經(jīng)不適用了,因?yàn)閞equire可以包含變量指向的文件,如:
  if($a = 1){
    $file = '1.php';
  }else{
    $file = '2.php';
  }
  require($file);
  2、包含文件不存在或者語(yǔ)法錯(cuò)誤的時(shí)候require是致命的,include不是。
  3、include有返回值,而require沒(méi)有(可能因?yàn)槿绱藃equire的速度比include快)。
  $login = include('test.php');
  if(!empty($login)){
    echo "文件包含成功";
  }else{
    echo "文件包含失敗";
  }
  引用文件的方法有兩種:require及include。兩種方式提供不同的使用彈性。
  require的使用方法如require("MyRequireFile.php"); 。這個(gè)函數(shù)通常放在PHP程序的最前面,PHP程序在執(zhí)行前,就會(huì)先讀入require所指定引入的文件,使它變成PHP程序網(wǎng)頁(yè)的一部份。常用的函數(shù),亦可以這個(gè)方法將它引入網(wǎng)頁(yè)中。
  include使用方法如include("MyIncludeFile.php"); 。這個(gè)函數(shù)一般是放在流程控制的處理部分中。PHP程序網(wǎng)頁(yè)在讀到include的文件時(shí),才將它讀進(jìn)來(lái)。這種方式,可以把程序執(zhí)行時(shí)的流程簡(jiǎn)單化。
  isset()和empty()的區(qū)別
  兩者都是測(cè)試變量用的,但是isset()是測(cè)試變量是否被賦值,而empty()是測(cè)試一個(gè)已經(jīng)被賦值的變量是否為空。  
  如果一個(gè)變量沒(méi)被賦值就引用在php里是被允許的,但會(huì)有notice提示,如果一個(gè)變量被賦空值,$foo=""或者$foo=0或者$foo=false,那么empty($foo)返回真,isset($foo)也返回真,就是說(shuō)賦空值不會(huì)注銷(xiāo)一個(gè)變量。  
   
  要注銷(xiāo)一個(gè)變量,可以用unset($foo)或者$foo=NULL


本文來(lái)自ChinaUnix博客,如果查看原文請(qǐng)點(diǎn):http://blog.chinaunix.net/u1/53398/showart_471983.html

論壇徽章:
0
2
發(fā)表于 2014-07-17 15:02
不錯(cuò)的代碼混淆知識(shí),感謝分享!
您需要登錄后才可以回帖 登錄 | 注冊(cè)

本版積分規(guī)則 發(fā)表回復(fù)

  

北京盛拓優(yōu)訊信息技術(shù)有限公司. 版權(quán)所有 京ICP備16024965號(hào)-6 北京市公安局海淀分局網(wǎng)監(jiān)中心備案編號(hào):11010802020122 niuxiaotong@pcpop.com 17352615567
未成年舉報(bào)專(zhuān)區(qū)
中國(guó)互聯(lián)網(wǎng)協(xié)會(huì)會(huì)員  聯(lián)系我們:huangweiwei@itpub.net
感謝所有關(guān)心和支持過(guò)ChinaUnix的朋友們 轉(zhuǎn)載本站內(nèi)容請(qǐng)注明原作者名及出處

清除 Cookies - ChinaUnix - Archiver - WAP - TOP