1. дергать веб-сервер не лучший вариант, я обычно делаю php-cli + $argv
2. но еще лучше запускать функционал в цикле, там можно гарантированно мерить 5ms функциями microtime() и usleep()
3. можно и во внешнем в цикле, только это не совсем правильно. + Команда sleep должна принимать флоаты, а это зависит от ее реализации:
Код:
#!/bin/sh
for i in {1..1000000}
#while true
do
php script.php param1 param2 param3
sleep 0.005
done
и так задержка будет равна: время работы скрипта + 5мс
чтобы свести задержку к конкретному значению можно замерять время работы с помощью time и вычислять следующую задержку, но в любом случае будет больше 5мс, т.к. тут каждый пхп будет стартовать каждый раз.
запуски можно делать c & в конце:
php script.php param1 param2 param3 &
но тогда надо быть осторожнее с числовыми параметрами, php может скушать всю память.
ну и вместо
php script.php param1 param2 param3
может быть всеми любимый:
wget -q -O /dev/null
http://site.com/script.php
(тоже самое про амперсанд в конце)