Heim  >  Artikel  >  Backend-Entwicklung  >  Ausführliche Erläuterung des Warteschlangenprinzips in PHP und des grafischen Codes zum Schreiben von Dateien

Ausführliche Erläuterung des Warteschlangenprinzips in PHP und des grafischen Codes zum Schreiben von Dateien

黄舟
黄舟Original
2017-11-02 09:21:371387Durchsuche

Die Beispiele in diesem Artikel beschreiben das PHP-Warteschlangenprinzip und Fälle des warteschlangenbasierten Dateischreibens. Teilen Sie es als Referenz mit allen. Die Details lauten wie folgt:

Die Warteschlange ist eine lineare Tabelle, die nach dem Prinzip First In First Out ausgeführt wird:

Dem Team beitreten:

Das Team verlassen:

PHP implementiert die Warteschlange: Das erste Element ist der Kopf der Warteschlange und das letzte Element ist das Ende der Warteschlange

<?php
/**
 * 队列就是这么简单
 *
 * @link
 */
$array = array(&#39;PHP&#39;, &#39;JAVA&#39;);
array_push($array, &#39;PYTHON&#39;); //入队列
array_shift($array); //出队列

Was ist eine doppelendige Warteschlange (oder Zwei-Wege-Warteschlange)? Deque, alle benannte doppelendige Warteschlange?

Das heißt, Elemente können an jedem Teil der Warteschlange eingegeben oder aus der Warteschlange entfernt werden. Wenn wir diese Methoden insertLeft() und insertRight() sowie removeLeft() und removeRight() aufrufen. Wenn der Aufruf der Methoden insertLeft() und removeLeft() streng verboten ist (oder die Operation des rechten Segments deaktiviert ist), funktioniert die doppelendige Warteschlange wie ein Stapel. Es ist verboten, insertLeft() und removeRight() (oder ein anderes Methodenpaar im Gegenteil) aufzurufen, und ihre Funktion ist dieselbe wie eine Warteschlange. Eine Deque ist im Vergleich zu einem Stack oder einer Warteschlange eine Mehrzweck-Datenstruktur.

PHP implementiert eine doppelendige Warteschlange

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

Zweck der Warteschlange:

Warteschlange kann die Datenübertragung und -speicherung asynchron verarbeiten. Wenn Sie häufig Daten in die Datenbank einfügen und an Suchmaschinen übermitteln, können Sie Warteschlangen verwenden, um Daten asynchron einzufügen. Darüber hinaus können auch langsamere Verarbeitungslogiken und Verarbeitungslogiken mit eingeschränkter Parallelität in den Hintergrund gestellt werden, um sie über Nachrichtenwarteschlangen zu verarbeiten, z. B. FLV-Videokonvertierung, Senden von SMS-Nachrichten an Mobiltelefone, Senden von E-Mails usw.

ProjektfallAufgrund von Serverberechtigungsproblemen gibt es keine Möglichkeit, das Warteschlangenprogramm zu installieren Die Parallelität beträgt 300+, die maximale Anzahl von Verbindungen zur Datenbank des Dienstanbieters beträgt 300. Um dieses Problem zu lösen, habe ich ein einfaches Warteschlangenprogramm geschrieben. Der Code lautet wie folgt:

Warteschlangencode lesen:

Das Lesewarteschlangenprogramm ist eigentlich eine Endlosschleife. Wenn das Programm keinen Abschaltpunkt festlegt, fährt es mit der Schleife
<?php
set_time_limit(0);
$file_name3 = &#39;3.txt&#39;;//这个地方是讲队列文件读出的内容写入文件,test中代替的是mysql数据库操作
$file3 = fopen($file_name3,&#39;a&#39;);
while(true)
{
  $c = FALSE;
  $file_name = &#39;1.txt&#39;;//队列文件
  $file = fopen($file_name,&#39;r&#39;);
  if(!feof($f))
  {
    //获得第一条数据
    $a = fgets($file);
    if(!empty($a))
    {
      $c = TRUE;
      fwrite($file3,$a);//这里可以改为数据库操作
    }
  }
  fclose($file);
  if($c)
  {
    //将文件的第一条数据删除
    exec(&#39;sed -i \&#39;1d\&#39; /var/www/csv_sql/1.txt&#39;);
  }
  sleep(1);
  if(time()>=strtotime(&#39;20160416150000&#39;))
  {
    exit;
  }
}
fclose($file3);
fort, um die Datei

zu lesen Das Warteschlangenprogramm ist relativ einfach. Schreiben Sie einfach die Datei

Das obige ist der detaillierte Inhalt vonAusführliche Erläuterung des Warteschlangenprinzips in PHP und des grafischen Codes zum Schreiben von Dateien. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn