Versions utilisées : TP5.1, thinkphp-queue 2.0
: database.php
// 是否需要断线重连 'break_reconnect' => true, // 断线标识字符串 'break_match_str' => ['2006'],Après la configuration, une autre erreur apparaîtra dans le log : PDO:: préparer () : l'envoi de 60 octets a échoué avec errno=32 Tuyau cassé, mais cela n'affecte pas les résultats d'exécution du programme. Parce qu'après la déconnexion et la reconnexion, le programme générera une erreur :
...} catch (\PDOException $e) { if ($this->isBreak($e)) { return $this->close()->query($sql, $bind, $master, $pdo); } throw new PDOException($e, $this->config, $this->getLastsql());} catch (\Throwable $e) { if ($this->isBreak($e)) { return $this->close()->query($sql, $bind, $master, $pdo); } throw $e;} catch (\Exception $e) { if ($this->isBreak($e)) { return $this->close()->query($sql, $bind, $master, $pdo); } throw $e;}
[program:my_queue_name]process_name=%(program_name)s_%(process_num)02d command=php /path/to/think queue:work --queue=your-queue-name --sleep=3 --daemon autostart=trueautorestart=truenumprocs=1user=root stopasgroup=truekillasgroup=trueredirect_stderr=truestdout_logfile=/path/to/your-queue.logMéthode 2 : Ouvrir une nouvelle configuration de référence miroir (ajouter des services dans docker-compose.yml) :
php-queue: container_name: queue image: docker_php-fpm73 restart: always command: php path/to/think queue:work --sleep=3 volumes: - ../project:/var/www/html - ./conf/php:/usr/local/etc/php - ./conf/php/conf.d:/usr/local/etc/php/conf.d - ./conf/supervisor:/etc/supervisor/conf.d networks: - mysql - nginxLa troisième méthode est un peu hacky. Afin de ne pas trop modifier l'environnement en ligne, la troisième méthode est finalement utilisée (opérant sur la machine hôte). Démarrer :
docker exec -i php7 php /path/to/think queue:work --queue=my-queue-name --sleep=3 --daemon
(Après le redémarrage, le processus de file d'attente a disparu), puis démarrer docker exec -i php7 php /path/to/think queue:restart
pour afficher le processus de file d'attente : ps - aux | grep queue
: config/queue.php
use think\facade\Log;Log::init([ 'single' => 'queue', 'file_size' => 1024 * 1024 * 10, 'level' => ['error'],]);Le journal sera sorti dans le
fichier runtime
dans le répertoire queue-cli.log
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!