Red de conocimiento informático - Conocimiento del nombre de dominio - Cómo utilizar Worker para implementar tareas programadas

Cómo utilizar Worker para implementar tareas programadas

mail_worker.php

use Workerman\Worker;

require_once './Workerman/Autoloader.php'; // trabajador de correo, utiliza el protocolo de texto para comunicarse con la persona que llama

$mail_worker = new Worker('Text://0.0.0.0:12345');

//Si envía mail La velocidad es muy lenta, puede aumentar el número de procesos de correo según sea necesario

$mail_worker->count = 80;

$mail_worker->name = 'MailWorker';

$mail_worker->onMessage = function($connection, $mail_data)

{

// Devuelve ok directamente para evitar que la persona que llama espere mucho tiempo

$conexión->send('ok');

// Supongamos que los datos enviados son datos json

$ mail_data = json_decode($mail_data,true );

// Enviar correos electrónicos basados ​​en mail_data. Si necesita reenviar correos electrónicos fallidos,

// Puede colocar tareas de correo electrónico fallidas en mysql,

// Establece un temporizador, analiza periódicamente los correos electrónicos fallidos y reenvíalos

your_send_mail_func($mail_data);

};

if(!definido('GLOBAL_START' ))

p>

{

Worker::runAll();

}

En tu proyecto puedes comunicarte con mail_worker como esto para enviar correo electrónico.

//$ip = "ip del trabajador de correo", 127.0.0.1 para local

$socket = stream_socket_client("tcp://$ip:12345", $errno, $errmsg , 5);

if(! $socket) echo $errmsg;

$mail_data = array("from"=>"...." , "to"=> "..." , "content"=>"...")

// Tenga en cuenta que se requiere el carácter de salto de línea "\n "después del protocolo de texto

$ mail_buffer = json_encode($mail_data).\n";

//Enviar al programa de trabajo de correo

fwrite($socket, $mail_buffer);

De esta manera puede enviar correos electrónicos de forma asincrónica, evitando que se bloquee el proceso principal al enviar correos electrónicos y acelerando enormemente la velocidad de respuesta de los pedidos.

De hecho, recibir notificaciones en tiempo real es una buena experiencia. en el sitio web después de realizar un pedido. Después de que el usuario realiza un pedido, el comerciante será notificado inmediatamente en el sitio web y el efecto es similar.

El acceso es muy simple

.