я использую PHP-спасательное для очереди моей работы. И я делаю apache ab tool для оценки моей производительности.
php-resque
хорошо работает, но работает медленно, так как каждый раз, когда он подключается к redis, что влияет на производительность (без подключения он обрабатывает ~130 Requests/sec
и с Resque::enqueue
его ~30 requests/sec
).
Поэтому я подумал передать данные в другой файл через exec
который соединит redis и queus задание в фоновом режиме, но обнаружил, что exec
это очень медленно.
Что дальше ? Как я могу заставить его справиться с Redis в очереди быстрее.
Примечание. Я использую эту команду для проверки производительности.
ab -n 1000 -c 10 "http://localhost/index.php"
Я нашел путь.
После копания php-resque
Я обнаружил, что он использует fsockopen что делает его медленным
Затем я установил php-redis
на моей машине убунту. Выполнив следующую команду.
sudo apt-get install php5-redis
Затем перезапустил сервер Apache:
sudo service apache2 restart
А затем связаны с Redis с помощью следующих строк кода.
<?php
$redis = new Redis();
$result = $redis->connect('127.0.0.1');
$id = md5(uniqid('', true));
$redis->set("resque:job:$id",$args);
$redis->close();
unset($redis);
После этого тестирование кода дало лучшую производительность (~70 requests/second)
что вдвое больше, чем раньше.
Примечание: здесь pconnect
обозначает постоянное соединение, которое быстрее, чем connect
,
Надеюсь, это кому-нибудь поможет.
Других решений пока нет …