2012-05-02 2 views
0

Я пишу какую-то тестовую систему в php, которая проверит мои записи в базе данных. Я разделил php-файлы для каждого тестового примера. Каждому (главному) файлу присваивается номер теста и входные параметры для этого теста в виде строки URL. Этот файл определяет номер теста и вызывает соответствующий тестовый пример на основе тестового номера. Теперь у меня есть группа строк URL, которые нужно передать, я хочу, чтобы те были переданы в этот (основной) файл, и каждый тестовый пример начинает работать независимо после получения своих параметров.Достижение многопоточности в PHP

+0

Если вы спрашиваете о многопоточности в PHP, скорее всего, вы либо чрезмерны, либо используете неправильный язык. Если вы не беспокоитесь о блокировке, просто используйте 'file_get_contents ($ url);' –

ответ

-1

Что вы можете сделать, это использовать cURL для отправки запросов обратно на сервер. Запрос будет обработан, и результаты будут возвращены.

Примером может быть:

$c = curl_init("http://servername/".$script_name.$params); 
curl_setopt($c, CURLOPT_RETURNTRANSFER, true); 
$result = curl_exec($c); 
curl_close($c); 

Хотя это не считается многопоточность, он может быть использован для достижения своей цели.

+0

Но это БЛОКИРОВКА - следовательно, нет взаимных потоков. OTOH, функции curl_mutli_, хотя и блокируют, могут вызвать несколько запросов. – symcbean

+0

А, да. Я не был уверен, что это многопоточность, но она должна служить цели OP. – Honoki

0

PHP не является многопоточным, он однопоточен. Вы не можете запускать новые потоки в PHP. Лучше всего будет file_get_contents (или cURL) другому скрипту PHP для «имитации» потоков. Истинное многопоточность недоступно в PHP.

Вы также можете посмотреть сообщение Джона в http://phplens.com/phpeverywhere/?q=node/view/254.

1

PHP - это однопоточный объект, в настоящее время для него не существует многопоточности. Тем не менее, есть несколько вещей, которые вы можете сделать для достижения аналогичных (но не идентичных) результатов для случаев использования, с которыми я сталкивался, когда люди обычно спрашивают меня о многопоточности. Опять же, в PHP нет многопоточности, но некоторые из приведенных ниже могут помочь вам в создании чего-то с характеристиками, которые могут соответствовать вашим требованиям.

  • libevent: вы можете использовать это, чтобы создать цикл событий для PHP, который сделает блокировку менее проблемой. См. http://www.php.net/manual/en/ref.libevent.php
  • curl_multi: Еще одна полезная библиотека, которая может запускать получение/публикацию других сервисов.
  • Управление процессом: не используется это самостоятельно, но может иметь значение, если управление процессом является одним из аспектов вашей проблемы. http://uk.php.net/pcntl
  • Gearman: Теперь это я использовал, и это очень хорошо. Это позволяет создавать рабочих и отводить процессы в очередь. Вы также можете посмотреть на rabbit-php или ZeroMQ.
+0

благодарит за полезное – user1369905

Смежные вопросы