В этой статье описывается пример PHP с использованием gearman для асинхронной отправки почты или SMS. Подробности заключаются в следующем:
1, Подготовка
1. Чтобы предотвратить простои в процессе обработки бизнеса, пожалуйста, настройте постоянный режим gearman. 2. Используйте немецкий менеджер для управления нашими рабочими сценариями для удобства тестирования.
Пожалуйста, прочтите две статьи, которые я написал ранее
2. Написание тестовых сценариев
Код отправки почты. php выглядит следующим образом:
workload(), true);
//Here we simulate the process
//For specific business, this should be the interface for sending e-mail request. Here is just a demonstration
sleep(1);
Echo "workid: {$workid} successfully sent {$data ['email ']} n";
}В client.php код выглядит следующим образом:
addServer('127.0.0.1', 4730);
$cnt = 5000;
$ret = array();
//Circulates 5000 messages
for($i = 0; $i < $cnt; ++$i) {
//Dobackground asynchronously returns the handle of the submitted task
$ret[$i] = $client->doBackground('sendEmail', json_encode(array(
'email' => "{$i}@qq.com",
'title '= > "email Title {$I}",
'body' = > "I am content {$I}",
)));
}3, Изменение информации о конфигурации в немецком менеджере
Мой менеджер gearman установлен в разделе/данные/Менеджер gearman/
> vi /data/GearmanManager/etc/GearmanManager.ini
Чтобы добавить следующую информацию, мы запускаем пять процессов отправки электронной почты
[sendEmail] ; Specify 5 processes dedicated_count=5 ; All five processes only do sendemail work dedicated_only=1
4, Начните с немецкого
> gearmand -d -q mysql \ --mysql-host=192.168.1.100 \ --mysql-port=3306 \ --mysql-user=gearman \ --mysql-password=123456 \ --mysql-db=gearman \ --mysql-table=gearman_queue &
5, Запустите диспетчер передач
> cd /data/GearmanManager > ./bin/pecl_manager.php -c /data/GearmanManager/etc/GearmanManager.ini -vvv
6, Запуск client.php
> /data/php56/bin/php /data/client.php
Когда мы говорим о МИРЕ, Когда manager.php выполняет Ctrl + C, работник вынужден закрыться, и client.php все еще может отправлять запросы нормально, но данные сохраняются в MySQL. Когда мы перезапустим работника, gearman перезагрузит необработанный для обработки.
Мой MySQL установлен на хосте, а виртуальная машина установлена на немецком языке. Если друг обнаружит, что Германия не может подключиться к MySQL, он может временно отключить брандмауэр win10 и включить эхо проверки win10.
Для получения дополнительной информации о PHP читатели, интересующиеся этим сайтом, могут ознакомиться со следующими темами: краткое описание навыков работы с процессами и потоками PHP, краткое описание навыков сетевого программирования PHP, вводный курс базового синтаксиса PHP, полная коллекция навыков работы с массивами PHP, краткое описание использования строк PHP “Руководство по работе с базой данных PHP + MySQL” и “Краткое описание навыков работы с общей базой данных PHP”
Я надеюсь, что эта статья будет полезна для программирования на PHP.