Les exemples de cet article décrivent le principe de la file d'attente PHP et les cas d'écriture de fichiers basés sur la file d'attente. Partagez-le avec tout le monde pour référence, les détails sont les suivants :
La file d'attente est un tableau linéaire, qui est réalisé selon le principe du premier entré, premier sorti :
Rejoindre l'équipe :
Quitter l'équipe :
PHP implémente la file d'attente : Le premier élément est la tête de la file d'attente, et le dernier élément est la queue de la file d'attente
<?php /** * 队列就是这么简单 * * @link */ $array = array('PHP', 'JAVA'); array_push($array, 'PYTHON'); //入队列 array_shift($array); //出队列
Qu'est-ce qu'une file d'attente double (ou file d'attente bidirectionnelle) Deque, toutes les files d'attente doubles nommées ?
Autrement dit, les éléments peuvent être entrés ou retirés de la file d'attente à n'importe quelle partie de la file d'attente si nous appelons ces méthodes insertLeft() et insertRight(), ainsi que RemoveLeft() et RemoveRight(). Si l'appel des méthodes insertLeft() et removeLeft() est strictement interdit (ou si le fonctionnement du segment droit est désactivé), la file d'attente double fonctionne comme une pile. Il est interdit d'appeler insertLeft() et removeRight() (ou une autre paire de méthodes au contraire), et sa fonction est la même qu'une file d'attente. Un deque est une structure de données polyvalente par rapport à une pile ou une file d'attente.
PHP implémente une file d'attente à double extrémité
<?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); } }
Objectif de la file d'attente :
File d'attente peut gérer la transmission et le stockage des données de manière asynchrone. Lorsque vous insérez fréquemment des données dans la base de données et soumettez des données aux moteurs de recherche, vous pouvez utiliser des files d'attente pour insérer des données de manière asynchrone. De plus, une logique de traitement plus lente et une logique de traitement avec une concurrence limitée peuvent également être placées en arrière-plan pour le traitement via les files d'attente de messages, telles que la conversion vidéo FLV, l'envoi de messages texte sur téléphone mobile, l'envoi d'e-mails, etc.
Cas du projetIl y a un projet ici En raison de problèmes d'autorisation du serveur, il n'y a aucun moyen d'installer le programme de file d'attente et le. la concurrence est de 300+, le fournisseur de services Le nombre maximum de connexions à la base de données est de 300. Afin de résoudre ce problème, j'ai écrit un programme de file d'attente simple. Le code est le suivant
Lire le code de la file d'attente : <🎜. >
Le programme de file d'attente de lecture est en fait une boucle infinie. Si le programme ne définit pas de point d'arrêt, il continuera à boucler
pour lire le fichier<?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);
et écrire. le programme de file d'attente. C'est relativement simple, il suffit d'écrire le fichier
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!