Метод exec и ему подобные, как известно, ожидают выполнения запущенного приложения, тем самым задерживая выполнение основного скрипта. Это не есть хорошо и даже непозволительно.
Сегодня, столкнувшись с необходимостью запуска скрипта с удаленного сервера для генерации отчета нашел подходящее мне решение.
На уникальность и предельную красоту не претендую. Привожу в качестве примера, в какую сторону можно копнуть:
system ( 'wget "http://site.com/script.php" > /dev/null 2>&1 &' );
Лучший, как по мне, вариант использовать curl вместо wget, но конкретно в моем случае его применение невозможно, поэтому я не смог окончательно проверить его работу.
Также обращаю внимание на адрес в кавычках. Данный пример отработает и без них, но если Вы будете передавать в GET параметры с разделителями (&) или другими символами — очень высока вероятность распознания в них спец. символов и, как итог, разбиения строки на подкоманды.
Поэтому , как говорится, на всякий пожарный ставьте кавычки.