Многопоточности в классическом понимании в пхп нет.
Есть нескролько способов которые могут заменить ее:
- Неблокируемые сокеты;
- Мултикурл;
- Запуск потоков в фон через командную строку юнихов;
- Запуск потоков через cron;
- pcntl;
- использование AJAX;
Запуск потоков в фон через командную строку юнихов выглядит примерно так:
for ($i = 0; $i <= 10; $i++) {
exec("php script.php $i par2");
}
где php - lunyx команда, script.php - пхп скрипт и $i, par2 - пареметры, доступ к которым можно получить так: $GLOBALS[’argv’][1] $GLOBALS[’argv’][2]. Только в операционной системе все потоки выполянются последовательно(проверял для lunux). Все потоки спят и только последний работает. Как только отработал запускается предыдущий итд.
Выход, в использовании крона. В цикле генерим крон-файл время с интревалом в 1 мин:
$fp = fopen ("cron.txt", "w");
for ($i = 0; $i <= 10; $i++) {
$cronmi = strtotime(”+$i minute”, $crondate);
$cronMin = date(”i”, $cronmi);
$cronHour = date(”G”, $cronmi);
$cronDay = date(”j”, $cronmi);
$cronMonth = date(”m”, $cronmi);
$cronWeek = date(”w”, $cronmi);
fwrite($fp, “$cronMin $cronHour $cronDay $cronMonth $cronWeek /usr/bin/php -f /path/to/file/script.php $i 10″);
}
fclose($fp);
//Запускаем крон.
system(”crontab cron.txt”);