php 高併發的計數器 排它型鎖定

2021-10-08 06:12:02 字數 998 閱讀 6278

精選30+雲產品,助力企業輕鬆上雲!>>>

php計數器原理很簡單.將資料寫入到文字中.然後讀出來加1 再寫進去.

不過遇到高併發就完蛋了.我有兩種辦法能解決這個問題.

方法一.利用sqlite資料庫實現高併發(節假日統計用的這個方法)

<?php 

header("content-type: text/html; charset=utf-8");

//應用舉例

require_once('sqlite.class.php');

//建立例項

$db=new sqlite('count.db'); //這個資料庫檔案名字任意

//建立資料庫表。

//$db->query("create table count(id integer primary key,name varchar(50),value integer)");

$name='count';

echo docount($name,1);

function docount($name='',$num=0)

$oldnum=$count['value'];

}if(empty($num) || empty($count))else

}?>

完整**:

方法二.php檔案排它型鎖定實現高併發

<?php 

$name='count';

echo docount($name,1);

function docount($name='',$num=0)

flock($fp, lock_un); // 釋放鎖定

fclose($fp);

return $newnum;

} else

}?>

兩種方法實現的效果基本上一樣.不過還是感覺排它型鎖定肯定計數上會有減少. 現在還不太確定哪個效率更高計數更準確.

利用Redis實現高併發計數器

業務需求中經常有需要用到計數器的場景 譬如乙個手機號一天限制傳送5條簡訊 乙個介面一分鐘限制多少請求 乙個介面一天限制呼叫多少次等等。使用redis的incr自增命令可以輕鬆實現以上需求。以乙個介面一天限制呼叫次數為例 是否拒絕服務 return private boolean denialofse...

利用Redis實現高併發計數器 請求限制

作者 李秀才 liboyi.blog.csdn.net article details 79427271 業務需求中經常有需要用到計數器的場景 譬如乙個手機號一天限制傳送5條簡訊 乙個介面一分鐘限制多少請求 乙個介面一天限制呼叫多少次等等。使用redis的incr自增命令可以輕鬆實現以上需求。以乙個...

用PHP製作自己的計數器

用php來實現計數器很簡單,計數器的實現分為兩個階段 一是實現計數 二是實現數字的顯示 而在實現計數時又有兩種方式 一是基於檔案的計數方式 二是基於資料庫的計數方式。而在實現數字的顯示也有兩種方式 一是普通的文字顯示 二是圖形方式顯示。下面就將這四種情況作一介紹 一 計數 1 基於檔案的計數 在這種...