Быстрая регистрация запросов - PullRequest
0 голосов
/ 06 декабря 2010

Я пытаюсь протестировать мой PHP-скрипт, который создает 48 дескрипторов cURL multi, каждый из которых содержит около 1500 запросов, и все они выполняются параллельно.Я пытаюсь убедиться, что все запросы действительно отправлены, и для этого я регистрирую запросы на моем сервере.Вот мой dump.php, к которому я делаю запросы со своим сценарием, и он записывает запрос в файл:

<?php
ob_start();
echo $_SERVER["REQUEST_URI"];
$dump = ob_get_clean();
$log = "dump.txt";
$fh = fopen($log, 'a') or die("can't open file");
fwrite($fh, $dump . "\r\n\r\n");
fclose($fh);

echo "Dump Completed";
?>

Однако существует небольшая проблема с возможностью моего четырехъядерного ПКзапускать эти запросы со скоростью около 1500 каждые 10 секунд и, скорее всего, перегружать мой сервер, когда он пытается открыть файл одновременно.Я установил задержку в 0,1 секунды между отправкой каждого запроса, но мой сервер, я думаю, все еще не может открыть файл, вывести текст и закрыть его до того, как поступит следующий запрос.В результате мой PHP-файл сообщает, что было отправлено около 72 тыс. Запросов, а мой сервер сообщает, что получено только около 14 тыс. Запросов.Это может быть связано с тем, что моя PHP-программа перегружает мой компьютер или систему портов, и некоторые запросы не были успешно отправлены, или мой сервер недостаточно быстр для обработки 150 запросов в секунду.

Любые возможные решения дляпытаться безопасно знать, что все мои запросы были отправлены?Когда мой клиент использует скрипт, обязательно, чтобы по крайней мере 99,5% запросов были отправлены, и его сервер достаточно мощный, чтобы справиться с этим без проблем.Я не могу проверить его на его серверах по соображениям безопасности, но мой не достаточно мощный, чтобы я мог имитировать условия работы.

Ответы [ 2 ]

0 голосов
/ 13 января 2011

База данных, безусловно, лучший вариант, если вам нужна сложная информация о запросах.

Если все, что вас волнует, это количество, я рекомендую счетчик Membase (http://www.membase.org/downloads)) с использованием атомарного добавления Memcacheоперация (http://php.net/manual/en/memcache.add.php)

0 голосов
/ 06 декабря 2010

В идеале, я бы записал эти значения в кеш ключа, такой как экземпляр memcached, а затем, в конце концов, в файл базы данных / плоский файл с однопоточным скриптом.Это даст вам возможность не отставать от запросов, а также возможность хранить данные на диске.

Сказав это, просто используйте базу данных в качестве быстрого обходного пути.

...