2016-02-15 6 views
1

У меня есть файл PHP скрипт test1.phpПараллельное выполнение PHP

<?php 
echo "hello\n" 
?> 

Когда я пытаюсь запустить php через командную строку, используя следующий код только один PHP процесс запуска и другой процесс PHP останавливается.
Напечатано только одно hello.
Почему другой процесс остановлен?

[[email protected] usr]# php -f test1.php & php -f test1.php 
[30] 20817 
hello 
[[email protected] usr]# 
[30]+ Stopped     php -f test1.php 

PS:

PHP 5.4.16 (cli) (built: Jun 23 2015 21:17:27) 
Copyright (c) 1997-2013 The PHP Group 
Zend Engine v2.4.0, Copyright (c) 1998-2013 Zend Technologies 
+0

Ввод '&' после команды в командной строке помещает его в фоновый режим. Таким образом, первая команда, вероятно, закончила работу в фоновом режиме, и поэтому вы не видите вывод. – jeroen

+0

Это странно. Просто попробовал это в системе ubuntu, и все работает так, как ожидалось, test1.php запускается дважды. – maxhb

+1

Вы должны использовать '&&': '# php -f test1.php && php -f test1.php' –

ответ

0

Сценарии получить выполняются параллельно.

Попробуйте эту модифицированную версию тестового сценария:

<?php 
// Read first command line argument 
$delay = (int) $argv[1]; 
// Wait for $delay seconds 
sleep($delay); 
// Output some message 
echo "Result after $delay seconds\n"; 

Если вызвать этот сценарий с помощью php hello.php 3 & php hello.php 1 вы увидите, что первый вызов будет работать в течение 3-х секунд и печатать некоторый вывод, а второй вызов будет работать только в течение 1 секунды и распечатать некоторый вывод до первого вызова посылает выход:

[email protected]:/tmp# php hello.php 3 & php hello.php 1 
[1] 15991 
Result after 1 seconds 
[email protected]:/tmp# Result after 3 seconds 

Если вы ищете другие способы параллельного выполнения скрипта вы должны взглянуть на этой статье https://d-mueller.de/blog/parallel-processing-in-php/

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