好湿?好紧?好多水好爽自慰,久久久噜久噜久久综合,成人做爰A片免费看黄冈,机机对机机30分钟无遮挡

主頁 > 知識庫 > PHP隊列原理及基于隊列的寫文件案例

PHP隊列原理及基于隊列的寫文件案例

熱門標簽:周口網絡回撥外呼系統 外呼系統人工客服 百度地圖標注類型是酒店 福建高頻外呼防封系統哪家好 全國各省地圖標注點 隨州銷售電銷機器人公司 商丘外呼系統好處 400電話申請辦理 網絡電話400申請

本文實例講述了PHP隊列原理及基于隊列的寫文件案例。分享給大家供大家參考,具體如下:

隊列是一種線性表,按照先進先出的原則進行的:

入隊:

出隊:

PHP實現隊列:第一個元素作為隊頭,最后一個元素作為隊尾

?php
/**
 * 隊列就是這么簡單
 *
 * @link
 */
$array = array('PHP', 'JAVA');
array_push($array, 'PYTHON'); //入隊列
array_shift($array); //出隊列

什么是雙端隊列(或雙向隊列)Deque,全名double-ended queue?

即元素可以在隊列的任意一段入隊或出隊,如果我們把這些方法叫做insertLeft()和insertRight(),以及removeLeft()和removeRight()。如果嚴格禁止調用insertLeft()和removeLeft()方法(或禁用右段的操作),雙端隊列功能就和棧一樣。禁止調用insertLeft()和removeRight()(或相反的另一對方法),它的功能就和隊列一樣了。雙端隊列與棧或隊列相比,是一種多用途的數據結構。

PHP實現雙端隊列

?php
class Deque
{
  public $queue = array();
  /**(尾部)入隊 **/
  public function addLast($value)
  {
    return array_push($this->queue,$value);
  }
  /**(尾部)出隊**/
  public function removeLast()
  {
    return array_pop($this->queue);
  }
  /**(頭部)入隊**/
  public function addFirst($value)
  {
    return array_unshift($this->queue,$value);
  }
  /**(頭部)出隊**/
  public function removeFirst()
  {
    return array_shift($this->queue);
  }
  /**清空隊列**/
  public function makeEmpty()
  {
    unset($this->queue);
  }
  /**獲取列頭**/
  public function getFirst()
  {
    return reset($this->queue);
  }
  /** 獲取列尾 **/
  public function getLast()
  {
    return end($this->queue);
  }
  /** 獲取長度 **/
  public function getLength()
  {
    return count($this->queue);
  }
}

隊列的用途:

隊列可以很好地異步處理數據傳送和存儲,當你頻繁地向數據庫中插入數據、頻繁地向搜索引擎提交數據,就可采取隊列來異步插入。另外,還可以將較慢的處理邏輯、有并發數量限制的處理邏輯,通過消息隊列放在后臺處理,例如FLV視頻轉換、發送手機短信、發送電子郵件等。

項目案例

這里有個項目,因為服務器權限問題,沒辦法安裝安裝隊列程序,而且并發300+,服務商的數據庫最大連接數是300,為了解決這個問題所以編寫了一個簡單的隊列程序,代碼如下

讀隊列代碼:

?php
set_time_limit(0);
$file_name3 = '3.txt';//這個地方是講隊列文件讀出的內容寫入文件,test中代替的是mysql數據庫操作
$file3 = fopen($file_name3,'a');
while(true)
{
  $c = FALSE;
  $file_name = '1.txt';//隊列文件
  $file = fopen($file_name,'r');
  if(!feof($f))
  {
    //獲得第一條數據
    $a = fgets($file);
    if(!empty($a))
    {
      $c = TRUE;
      fwrite($file3,$a);//這里可以改為數據庫操作
    }
  }
  fclose($file);
  if($c)
  {
    //將文件的第一條數據刪除
    exec('sed -i \'1d' /var/www/csv_sql/1.txt');
  }
  sleep(1);
  if(time()>=strtotime('20160416150000'))
  {
    exit;
  }
}
fclose($file3);

讀隊列程序其實就是一個死循環程序,如不設置關閉點,則一直循環讀取文件

寫入隊列程序比較簡單,就是寫文件

?php
set_time_limit(0);
$file_name2 = '2.txt';//test中用來比對隊列程序是否正常的
$file2 = fopen($file_name2,'a');
for($i=1;$i11;$i++)
{
  $file_name = '1.txt';//隊列文件
  $file = fopen($file_name,'a');//fopen的mode屬性必須是a或a+
  $str = $i.'--'.rand(100001,999999);
  fwrite($file,$str."\n");
  fwrite($file2,$str."\n");
  sleep(1);
  fclose($file);
}
fclose($file2);

更多關于PHP相關內容感興趣的讀者可查看本站專題:《PHP數據結構與算法教程》、《PHP基本語法入門教程》、《php面向對象程序設計入門教程》、《php字符串(string)用法總結》、《php+mysql數據庫操作入門教程》及《php常見數據庫操作技巧匯總》

希望本文所述對大家PHP程序設計有所幫助。

您可能感興趣的文章:
  • PHP隊列用法實例
  • PHP+memcache實現消息隊列案例分享
  • PHP的Laravel框架中使用消息隊列queue及異步隊列的方法
  • php Memcache 中實現消息隊列
  • PHP使用數組實現隊列
  • PHP消息隊列用法實例分析
  • php實現的雙向隊列類實例
  • 隊列在編程中的實際應用(php)
  • phpredis提高消息隊列的實時性方法(推薦)
  • PHP基于Redis消息隊列實現發布微博的方法
  • PHP實現的memcache環形隊列類實例

標簽:南寧 樂山 定西 六安 海南 迪慶 十堰 佛山

巨人網絡通訊聲明:本文標題《PHP隊列原理及基于隊列的寫文件案例》,本文關鍵詞  PHP,隊列,原理,及,基于,的,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《PHP隊列原理及基于隊列的寫文件案例》相關的同類信息!
  • 本頁收集關于PHP隊列原理及基于隊列的寫文件案例的相關信息資訊供網民參考!
  • 推薦文章
    主站蜘蛛池模板: 禁忌亲生高H乱np| japanesexxxxx护士| 联合早报南略网高清完整视频| 亚洲色无色A片一区二区| 九九影院理论片私人影院| 日本综合a一区二区视频| 仙踪林99国产精品久久久久 | 折腾了一个多小时才弄出来的头发| 国产尤物蜜臀福利精品小视频| 茄子污| 69tang在线观看| 免费约妹APP| 成人一级毛片| 免费观看男人吊女人视频| 电车上强制波多野结衣| 老太婆BBw搡BBBB搡搡搡搡| 蜜桃在线视频| 免费观看又色又爽又黄的软件下载| 久草精品免费| 9I婬黄看大片| 人妻婬乱精品视频免费| 日韩dvd碟片| 国产高清在线播放可乐视频| 日韩国产欧美成人一区二区影院| vr免费网站入口官网| 国模小树粉嫩极品图| 黄色影视频在线观看高清完整版| 色在线免费观看| 午夜伦伦影理论片大片飘花影院 | 福利姬网站| 将夜1~60集免费观看| 欧美人野外做爰AAAAA| 日韩欧美极品| 中文字幕日韩精品一区口| 夫妻性生活毛片| 天天摸日日摸狠狠添高潮喷| 码精品少妇A无码久久久| 欧洲牧场的性行为| 亚洲1234区乱码| 扒开双腿疯狂进出爽爽爽观看| 久久久久夜色精品国产明星 |