1. 糾結啊糾結,你看了你也糾結--php高手來解惑……
這個不太實用。因為你這個根本就是個無限循環。這意味著每個訪問者會增加一個新的php進程,而且該進程不會自動關閉,就算訪問者離開,進程也不會關閉。
一般來說,通過ajax短暫的進行獲取比較好。畢竟每次獲取結束後伺服器上的進程會結束,資源會被釋放,至於你的伺服器是否能承受百萬瀏覽,那就要看你的網站的同時連接數的平均值了。
你的伺服器是有固定同時連接數,但是並不是1000個同時連接數等於只支持1000個人瀏覽,一般一台伺服器平均同時連接數保持在100~200左右已經是極限了,而且也是很高的瀏覽率了。
至於伺服器端主動推送,這個你必須保證你頁面上有能夠開啟tcp或者udp的通道的功能,並且能在離線時自動斷開通道。這個在網頁上目前很難實現。所以建議你還是考慮ajax,每30秒獲取一次比較實際。
2. php抓捕網頁,程序運行一會兒就停止了。不是他應該一直抓取,等到程序運行完成才結束嗎
1, 這種不停的抓別人數據的批處理情景, 中間應該時不時停下來休息一下, 比如:sleep usleep, 不然, 對方伺服器可以認為是攻擊, 就不正常響應給你.
2, 這種批處理, 應該寫成可以隨時停止而不用從頭再開始, 設置一下當前處理到的位置, 然後, 下次再開始執行, 就從那個位置開始繼續. 因為PHP進程也是會死掉的. 最好是用crontab定時殺掉前進程, 然後開新進程.
3. php 隊列等待問題。高分懸賞
php 中是有Thread這個擴展類的 這個就是支持隊列安裝我不說了
<?php
classTextThreadextendsThread{
public$url;
public$data;
publicfunction__construct($url){
$this->url=$url;
}
publicfunctionrun(){
$this->data=curlGet($this->url);
}
}
//獲取信息
functioncurlGet($url){
$ch=curl_init();
curl_setopt($ch,CURLOPT_URL,$url);
curl_setopt($ch,CURLOPT_HEADER,0);
curl_setopt($ch,CURLOPT_TIMEOUT,5);
curl_setopt($ch,CURLOPT_RETURNTRANSFER,1);
$data=curl_exec($ch);
curl_close($ch);
return$data;
}
//
functioncreateThread($urlArray){
$threadDataArray=array();
foreach($urlArrayas$key=>$val){
$threadArray[$key]=newTextThread($val);
$threadArray[$key]->run();
}
foreach($threadArrayas$key=>$thread){
while($thread->isRunning()){
usleep(100);
}
if($thread->join()){
$threadDataArray[$key]=$thread->data."====".$key."<br/>";
}
//var_mp($thread->join());
}
return$threadDataArray;
}
for($i=0;$i<=100;$i++){
$url='http://newyibo.com/Index/getThread';
$urlArray[]=$url;
}
$t=microtime(true);
$data=createThread($urlArray);
$e=microtime(true);
var_mp($data);
echo"多線程:".($e-$t)."<br/>";
這是我原來研究的的一個例子,僅供參考
貌似這個還有一個Event擴展類也有關系,這個沒研究過
4. 如何提高PHP寫入文件的速度
1、代碼優化
代碼優化不僅僅是寫出干凈和清晰的代碼,而是對代碼進行一定的簡化。可以使用Zend Optimizer來自動幫助完成這些繁雜的工作。Zend Optimizer可以從Zend Technologies的網站http://www.zend.com/免費得到,但必須同意它的許可約定,因為它不是以GPL方式發行的。它的原理很簡單,即通過檢測Zend引擎產生的中間代碼,並對它進行優化,從而獲得更高的執行速度。
2、使用緩存
如果PHP程序的規模很大,那麼提高速度的辦法就是使用緩存。現在已經有許多緩存方案可供選擇,其中包括Zend Cache、APC和Afterburner Cache。
3、壓縮網頁內容
影響站點的訪問速度還有1個重要因素,那就是下載速度。解決的辦法就是壓縮網頁內容。對於純文本內容而言,HTTP壓縮技術可壓縮至原大小的40%以下,從而提供60%以上的數據傳輸節約。雖然Web伺服器會因為壓縮導致CPU佔用的略微上升,但可以節約大量用於傳輸的網路IO。
4其它技巧
在編程時,使用一些小技巧也可以加快PHP的運行速度:
(1)用i+=1代替i=i+1,既符合c/c++的習慣,效率相對還更高。
(2)盡可能使用PHP內部函數。
(3)能使用單引號字元串時,盡量使用單引號字元串。單引號字元串的效率要高於雙引號字元串。
(4)用foreach代替while遍歷數組,foreach的效率明顯高於while循環,而且不需要調用reset函數。
5. sleep函數
在VC中使用帶上頭文件
#include <windows.h>
注意:
在VC中Sleep中的第一個英文字元為大寫的"S"
在標准C中是sleep, 不要大寫.. 下面使用大寫的來說明,, 具體用什麼看你用什麼編譯器. 簡單的說VC用Sleep, 別的一律使用sleep.
Sleep函數的一般形式:
Sleep(unisgned long);
其中,Sleep()裡面的單位,是以毫秒為單位,所以如果想讓函數滯留1秒的話,應該是Sleep(1000);
例:
#include <windows.h>
int main()
{
int a;
a=1000;
Sleep(a);/* VC 使用Sleep*/
return 0;
}
usleep功能:
暫停執行。 語法: void usleep(int micro_seconds); 返回值: 無 函數種類: PHP 系統功能 內容說明:本函數可暫時使程序停止執行。參數 micro_seconds 為要暫停的毫秒數(微妙還是毫秒?)。 注意:這個函數不能工作在 Windows 操作系統中。參見:usleep() 與sleep()類似,用於延遲掛起進程。進程被掛起放到reday queue。
只是一般情況下,延遲時間數量級是秒的時候,盡可能使用sleep()函數。
且,此函數已被廢除,可使用nanosleep。
如果延遲時間為幾十毫秒,或者更小,盡可能使用usleep()函數。這樣才能最佳的利用CPU時間
delay:
函數名: delay
功 能: 將程序的執行暫停一段時間(毫秒)
用 法: void delay(unsigned milliseconds);
程序例:
/* Emits a 440-Hz tone for 500 milliseconds */
#include<dos.h>
int main(void)
{
sound(440);
delay(500);
nosound();
return 0;
}
(由於delay讀音像地雷,在各大OI灌水區通用……)
delay()是循環等待,該進程還在運行,佔用處理器。
sleep()不同,它會被掛起,把處理器讓給其他的進程。
sleep()參數指定暫停時間,單位是s
delay()參數指定暫停時間,單位是ms
6. PHP有沒有間隔幾秒再執行的功能
echo'時間一:',date('Y-m-dH:i:s');
//使用sleep()函數,程序延遲執行
sleep(3);
echo'時間二:',date('Y-m-dH:i:s');
usleep()- 以指定的微秒數延遲執行
time_nanosleep()- 延緩執行若干秒和納秒
time_sleep_until()- 使腳本睡眠到指定的時間為止。
set_time_limit()- 設置腳本最大執行時間
7. PHP 執行循環時 或者 執行一條語句的時候能不能 指定延遲時間 讓它等幾秒以後再接著執行操作
如果是秒為單位的話。。sleep 即刻
for($i = 0; $i < $10; $i++){
echo $i;
sleep(2); // 暫停2秒
}
8. php 隊列中usleep 會不會導致進程死鎖
recv sleep狀態,表示 等待網路讀取 。 沒有必要kiLLsp_who 得出的 blk_spid 即為阻塞的進程ID,也就是處於死鎖狀態的進程ID
9. php裡面的sleep函數是秒級別的嗎怎麼sleep毫秒級
底部按鈕是配置文件切換鍵。
當使用滑鼠底部的配置文件按鈕時,按下配置文件按鈕將提升一個配置文件。[需要安裝100個Razer配置器,比如RazerSynaPSe3)
當切換啟用的配置文件時,雷蛇煉獄蝰蛇閃爍相應的次數——例如,如果配置文件3被激活,滑鼠閃爍三次以表明配置文件已被選擇。
(9)phpusleepsleep擴展閱讀:
雷蛇的精英版地獄毒蛇不同於地獄毒蛇如下:
1.不同的感測器:
viper感測器是一個本機6400DPI光學感測器,最大解析度為6400DPI。煉獄蝰蛇精英感測器是16000DPI第五代光學發動機感測器。
2.不同數量的可編程鍵:
常規版本的煉獄毒蛇有五個可編程的按鈕和雷蛇獨特的飛行感應模式按鈕在底部。與之前的版本相比,地獄毒蛇精英版有7個按鈕,並且取消了底部的飛行感應模式。
3.不同的滑鼠移動和側邊裙:
煉獄蝰蛇精英配備了一個新的微開關,由雷蛇和歐姆龍設計,以及改善滾動感覺和雙向DPI調整按鈕。精英側裙由橡膠製成,而標准側裙由塑料製成。
4.不同的滑鼠重量:
標准版的《煉獄蝰蛇》重96克/0.211磅(不含電纜),而精英版的《煉獄蝰蛇》重105克/0.23磅。
5.可調節背光效果:
標准版的煉獄毒蛇背光只支持單色背光,不能與雷蛇驅動背光。地獄蝰蛇精英背光有1680萬的幻影燈定製顏色選項,可以與雷蛇驅動背光。