日韩天天综合网_野战两个奶头被亲到高潮_亚洲日韩欧美精品综合_av女人天堂污污污_视频一区**字幕无弹窗_国产亚洲欧美小视频_国内性爱精品在线免费视频_国产一级电影在线播放_日韩欧美内地福利_亚洲一二三不卡片区

利用PHP V5開發(fā)多任務(wù)應(yīng)用程序(6)_PHP教程

編輯Tag賺U幣
教程Tag:暫無Tag,歡迎添加,賺取U幣!

推薦:詳細(xì)解析 PHP 向 MySQL 發(fā)送數(shù)據(jù)過程
下面的一段代碼是一個很簡單的 HTML 表單: <html> <body> <formaction=submitform.php3method=GET> 姓:<inputtype=textname=fir

大多數(shù) PHP 頁面已經(jīng)足夠快 —— 更好的性能會是一種優(yōu)勢,但是還不值得對新代碼進(jìn)行投入。

在 Web 頁面中使用 PHP 可以放棄部分無關(guān)緊要的性能提升 —— 當(dāng)惟一的價值標(biāo)準(zhǔn)是交付整個 Web 頁面需要的時間時,那么重新安排計算以更快地獲得中間結(jié)果并不重要。

PHP 不能控制本地瓶頸 —— 用戶可能會為花 8 秒的時間提取帳戶記錄的詳細(xì)信息而抱怨,但是那很可能是數(shù)據(jù)庫處理或某種其他 PHP 外部資源的約束。即使將 PHP 處理降至零,單是查找就仍需要花費超過 7 秒的時間。

甚至很少有約束是并行的 —— 假定某特定頁面將為具體列出的普通股計算建議交易價格,并且計算十分復(fù)雜,需要花費一段時間。計算在本質(zhì)上可能是順序執(zhí)行的。沒有一種明顯的方法可以將其劃分為 “團(tuán)隊協(xié)作”。

很少有 PHP 程序員能夠認(rèn)識到 PHP 實現(xiàn)并發(fā)的潛力。在具有使用并行實現(xiàn)性能需求的少數(shù)人當(dāng)中,我遇到的大多數(shù)人全都說 PHP “不支持線程”,并且甘于使用現(xiàn)有的計算模型。

可是,有時我們可以做得更好。假定 PHP 頁面需要計算兩只股票價格,可能還需要將兩者相比較,并且底層主機(jī)剛好是多處理器。在這種情況下,通過將兩個截然不同并且十分耗時的計算分配給不同處理器,可能會提高幾乎兩倍的性能。

在所有 PHP 計算領(lǐng)域中,此類實例很少見。但是,由于我發(fā)現(xiàn)到處都沒有對它的精確記錄,因此需要在這里包括用于此類加速的模型。

清單 5. 延遲服務(wù)器實現(xiàn)

<?php
echo "Program starts at ". date('h:i:s') . ".
";
$timeout=10;
$streams=array();
$handles=array();
/* First launch a program with a delay of three seconds, then
one which returns after only one second. */
$delay=3;
for ($id=0; $id <= 1; $id ) {
  $error_log="/tmp/error" . $id . ".txt"
  $descriptorspec=array(
0 => array("pipe", "r"),
1 => array("pipe", "w"),
2 => array("file", $error_log, "w")
  );
  $cmd='sleep ' . $delay . '; echo "Finished with delay of ' .
  $delay . '".';
  $handles[$id]=proc_open($cmd, $descriptorspec, $pipes);
  $streams[$id]=$pipes[1];
  $all_pipes[$id]=$pipes;
  $delay -= 2;
}
while (count($streams)) {
  $read=$streams;
  stream_select($read, $w=null, $e=null, $timeout);
  foreach ($read as $r) {
$id=array_search($r, $strea**ms);
echo stream_get_contents($all_pipes[$id][1]);
if (feof($r)) {
  fclose($all_pipes[$id][0]);
  fclose($all_pipes[$id][1]);
  $return_value=proc_close($handles[$id]);
  unset($streams[$id]);
}
  }
}
?>


此程序?qū)⑸扇缦螺敵觯?/p>

Program starts at 10:28:41.
Finished with delay of 1.
Finished with delay of 3.

這里的關(guān)鍵在于 PHP 啟動了兩個獨立子進(jìn)程,取回待完成的第一個進(jìn)程的輸出,然后取回第二個進(jìn)程的輸出,即使后者啟動得較早。如果主機(jī)是多處理器計算機(jī),并且操作系統(tǒng)已正確配置,則操作系統(tǒng)本身負(fù)責(zé)將各個子程序分配給不同的處理器。這是在多處理器主機(jī)中良好應(yīng)用 PHP 的一種方法。

PHP 支持多任務(wù)。PHP 不按照諸如 Java 編程語言或 C 等其他語言所采用的方法支持線程,但是以上示例表明 PHP 具有更多的超乎想象的加速潛力。

分享:PHP實現(xiàn)靜態(tài)發(fā)布的方法淺談
如今很多網(wǎng)站都是靜態(tài)發(fā)布的,PHP當(dāng)然也可以方便的實現(xiàn)靜態(tài)發(fā)布嘍,具體的實現(xiàn)方法很多,下面我就說說我會的兩種方法。 方法一:ob_get_contents() 這是一種很方便的方法,也是很常用的方法

共6頁上一頁123456下一頁
來源:模板無憂//所屬分類:PHP教程/更新時間:2008-08-22
相關(guān)PHP教程