Параллельное выполнение PHP

1

У меня есть файл сценария php test1.php

 <?php
echo "hello\n"
?>

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

[root@home usr]# php -f test1.php & php -f test1.php
[30] 20817
 hello
[root@home 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
    Размещение команды & после команды в командной строке переводит ее в фоновый режим. Итак, первая команда, вероятно, завершила работу в фоновом режиме, и поэтому вы не видите вывод.
  • 0
    Это странно. Только что попробовал это в системе Ubuntu, и все работает как положено, test1.php выполняется дважды.
Показать ещё 7 комментариев
Теги:
command-line-interface

1 ответ

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 этот скрипт через php hello.php 3 & php hello.php 1 вы увидите, что первый вызов будет выполняться в течение 3 секунд и распечатать некоторый вывод, в то время как второй вызов будет работать только в течение 1 секунды и распечатать некоторый вывод до первого вывод вызовов:

root@httpserver:/tmp# php hello.php 3 & php hello.php 1
[1] 15991
Result after 1 seconds
root@httpserver:/tmp# Result after 3 seconds

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

Ещё вопросы

Сообщество Overcoder
Наверх
Меню