Используйте microtime (), чтобы получить время в начале forloop, а затем используйте microtime () в конце, чтобы получить время в конце вашего кода и вычесть время в конце из времени в начале, чтобы получить разницу. Вот как долго твой код работал.
РЕДАКТИРОВАТЬ:
curl_setopt($ch, CURLOPT_WRITEFUNCTION, ‘read_body’);//sets callback
http://www.php.net/manual/en/function.curl-setopt.php
curl_multi запускает процессы параллельно. Поэтому мое предыдущее предложение не сработает. Решение: добавить обратный звонок! возьмите микротрем, когда все эти процессы запускаются, и в записи обратного вызова укажите идентификатор процесса и время, когда он зарегистрировался. К сожалению, все эти процессы будут бороться за контроль над этим обратным вызовом. Я полагаю, что решение этой проблемы заключается в использовании fork () для создания новых процессов. Это требует много работы только для того, чтобы вернуть индикатор выполнения, но если вам интересно, здесь есть ссылка на php fork ():
http://php.net/manual/en/function.pcntl-fork.php