久久久久久久av_日韩在线中文_看一级毛片视频_日本精品二区_成人深夜福利视频_武道仙尊动漫在线观看

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

這篇文章主要介紹了PHP隊列原理及基于隊列的寫文件案例,較為詳細的分析了隊列的原理、定義方法并結(jié)合實例形式給出了php基于隊列的寫文件操作技巧,需要的朋友可以參考下

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

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

入隊:

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

出隊:

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

PHP實現(xiàn)隊列:第一個元素作為隊頭,最后一個元素作為隊尾

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

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

即元素可以在隊列的任意一段入隊或出隊,如果我們把這些方法叫做insertLeft()和insertRight(),以及removeLeft()和removeRight()。如果嚴格禁止調(diào)用insertLeft()和removeLeft()方法(或禁用右段的操作),雙端隊列功能就和棧一樣。禁止調(diào)用insertLeft()和removeRight()(或相反的另一對方法),它的功能就和隊列一樣了。雙端隊列與?;蜿犃邢啾?,是一種多用途的數(shù)據(jù)結(jié)構(gòu)。

PHP實現(xiàn)雙端隊列

<?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);
  }
}

隊列的用途:

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

項目案例

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

讀隊列代碼:

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

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

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

<?php
set_time_limit(0);
$file_name2 = '2.txt';//test中用來比對隊列程序是否正常的
$file2 = fopen($file_name2,'a');
for($i=1;$i<11;$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相關內(nèi)容感興趣的讀者可查看本站專題:《PHP數(shù)據(jù)結(jié)構(gòu)與算法教程》、《PHP基本語法入門教程》、《php面向?qū)ο蟪绦蛟O計入門教程》、《php字符串(string)用法總結(jié)》、《php+mysql數(shù)據(jù)庫操作入門教程》及《php常見數(shù)據(jù)庫操作技巧匯總》

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

【網(wǎng)站聲明】本站除付費源碼經(jīng)過測試外,其他素材未做測試,不保證完整性,網(wǎng)站上部分源碼僅限學習交流,請勿用于商業(yè)用途。如損害你的權(quán)益請聯(lián)系客服QQ:2655101040 給予處理,謝謝支持。

相關文檔推薦

這篇文章主要介紹了PHP有序表查找之插值查找算法,簡單分析了插值查找算法的概念、原理并結(jié)合實例形式分析了php實現(xiàn)針對有序表插值查找的相關操作技巧,需要的朋友可以參考下
下面小編就為大家分享一篇ThinkPHP整合datatables實現(xiàn)服務端分頁的示例代碼,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
下面小編就為大家分享一篇PHP實現(xiàn)APP微信支付的實例講解,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
這篇文章主要介紹了PHP實現(xiàn)的多維數(shù)組排序算法,結(jié)合實例形式對比分析了php針對多維數(shù)組及帶有鍵名的多維數(shù)組進行排序相關操作技巧與注意事項,需要的朋友可以參考下
這篇文章主要為大家詳細介紹了php結(jié)合ajaxuploadfile實現(xiàn)無刷新文件上傳功能,具有一定的參考價值,感興趣的小伙伴們可以參考一下
本篇文章給大家詳細介紹了PHP開發(fā)接口使用RSA進行加密解密方法,對此有興趣的朋友可以學習下。
主站蜘蛛池模板: 自拍 亚洲 欧美 老师 丝袜 | 97精品超碰一区二区三区 | 国产成人精品久久二区二区 | 欧美一区二区三区 | 久久久91精品国产一区二区三区 | 丁香婷婷成人 | 黄免费在线 | 日韩毛片免费看 | 成人影院免费视频 | 99久久99热这里只有精品 | 91精品国产综合久久福利软件 | 亚洲成人综合网站 | 日韩成人中文字幕 | 欧美一级片在线观看 | 国产午夜高清 | 中文字幕久久久 | 性高湖久久久久久久久 | 免费成人高清在线视频 | 91中文字幕在线 | 亚洲国产一区在线 | 中国xxxx性xxxx产国 | 夜夜骚视频 | 狠狠亚洲 | 欧美a在线| 麻豆一区 | 精品福利在线视频 | 久久久久久久久久久久久久国产 | 精品国产乱码 | 国产精品久久久久久久久婷婷 | a在线免费观看视频 | 欧美毛片免费观看 | 国产98色在线 | 日韩 | 精品久久久久久一区二区 | 久久久成人网 | 第四色影音先锋 | 成人精品一区二区三区 | 北条麻妃视频在线观看 | 亚洲精品一区二区三区四区高清 | 粉嫩一区二区三区四区公司1 | 在线一级片 | 久久伊人一区 |