Ⅰ 在線等:如何使同一客戶端請求的多個相同的php腳本實例同時運行
你的寫LOG和讀LOG的原理是什麼呢?
或者你可以提供部分文件給我,我幫你看看
正如你提供的連接顯示的內容,你考慮先清空緩存,再在ShowLog的PHP里禁止緩存試試。
PHP禁止緩存:http://www.everalan.com/blog/index.php/archives/212
理論上即使有100個頁面同時require application_top.php,每個頁面都打開一個資料庫連接,也不會出現你說的情況的,因為MYsql和APACHE一樣是支持並發的。建議你仔細分析一下你的代碼。
這種情況只出現在FIREFOX中,IE下不會的。似乎FIREFOX一個URL只能同時有一個線程讀取。你可以測試一下,分別用IE和FIREFOX執行以下的test.php
test.php文件:
<?php
for($i=0; $i<100; $i++){
echo $i . "<br/>";
ob_flush(); flush();
sleep(1);
}
解決辦法是在URL後多加上一個時間戳,保證每次的URL都不一樣,有不會影響你的代碼。例如test.php?23423432, test.php?9923432 這樣就能同時執行了
如果像ajax83316說的那樣,你在程序里使用了耗時的獨占且鎖定資源(尤其是資料庫)的演算法,只能優化你的演算法了,別無它法
補充說明,伺服器可以同時為很多客戶端(取決於你的伺服器配置)執行一個程序(例如test.php)。像新浪的首頁也許同時有10000個用戶在調用。所以不會是伺服器的問題。
Ⅱ 怎樣用php實現兩個mysql資料庫的同步
使用程序無法實現這種功能,因為無法保證事務的一致性,比如:A資料庫中的a表復制到B資料庫中的a表的過程中,A資料庫中的a表的一條記錄被刪除,這樣就無法實現數據的一致性!正確的做法是使用MySQL復制的功能!很簡單,只需要幾步配置即可!
Ⅲ php查詢數據與資料庫內信息不一致,該怎麼解決
1.有可能有緩存,你可以更新下緩存。
2.檢查下資料庫配置方面的信息,看看是否配置正確。
Ⅳ php redis高並發rpush是數據一致性嗎
不會,這里的原子性不要從php的角度看,應該從redis的角度看,同一個redis節點對並發的請求都是序列化處理的,所以單操作不存在你擔心的並發問題,但如果是read & write的形式到哪裡都不行了,切記。
有人問到read & write是啥,其實就是並發的一個經典問題,代碼如下
$v = $redisClient->get('v');
$v ++;
$redisClient->set('v', $v);
就是先讀取數據,再修改數據,在寫回修改,這里是希望每次訪問都遞增v的值,但在並發情況下,兩個進程都讀取到了一樣的初始值,比如3,然後都加1變為4,最後把4寫回Redis,這種情況就會統計數據比實際的少。盡量都用Redis的原子操作就好,比如incr。
Ⅳ php怎麼實現多個介面同時觸發 對於先返回的數據先處理
需求描述不準確。
你是需要在客戶端同時訪問幾個介面(介面端用的php)?
1.如果是這個需求的話,客戶端js自帶非同步屬性,用ajax,同時做幾個調用,在回調里處理數據就行了,只是伺服器端,如果有session,需要確保耗時操作前寫入並關閉session,不然同一個客戶端的訪問會被session卡住(默認的文件模式的session)
2.還是需要在php代碼中同時進行多個介面並發調用,在各自返回時處理,然後整合結果輸出 ?
這種的話,php本身不支持非同步並發編程,可以考慮用nodejs或者php的擴展 swoole 之類的去做
Ⅵ php同時從上百個伺服器的資料庫獲取數據並匯總
PHP要連接上百台或更多台伺服器資料庫的話,我想你還在是本地寫一個數據專門來存放每一台伺服器資料庫的信息,然後用循環來連接,而每次連接一台服務然後把得到信息存在本地的資料庫里,每隔30秒到50秒執行一次。時間長了,本地的資料庫中就會有信息了,然後再讀本地的資料庫來統計
Ⅶ php程序如何避免用戶同時訪問某連接造成的數據錯誤
樓主你可以考慮MYSQL的事務處理功能。
一般來說,事務是必須滿足4個條件(ACID)
原子性(Autmic):事務在執行性,要做到「要麼不做,要麼全做!」,就是說不允許事務部分得執行。即使因為故障而使事務不能完成,在rollback時也要消除對資料庫得影響!
一致性(Consistency):事務得操作應該使使資料庫從一個一致狀態轉變倒另一個一致得狀態!就拿網上購物來說吧,你只有即讓商品出庫,又讓商品進入顧客得購物籃才能構成事務!
隔離性(Isolation):如果多個事務並發執行,應象各個事務獨立執行一樣!
持久性(Durability):一個成功執行得事務對資料庫得作用是持久得,即使資料庫應故障出錯,也應該能夠恢復!
說白了就是某一個用戶進行兌換操作的時候,就把對應的數據表鎖定死,只有等操作完成後才解鎖。
Ⅷ PHP能不能給一個API介面同時發送多條請求!
應該是沒問題的,php是執行的多線程,就是說,不同的用戶請求,伺服器會啟用不同的線程為你服務,只要量不是特別大,並發訪問應該問題不大