Kepiting Bula Ответов: 1

Фатальная ошибка: вызов неопределенной функции pcntl_fork() в ОС windows


Я не могу выполнять php-приложения, потому что
Call to undefined function pcntl_fork() 

как я решаю эти проблемы. Я использовал XAMPP для windows 7.
Проблемы есть
$pid = pcntl_fork();

  if ($pid == -1) {
die("ERROR");
  }
  else if ($pid == 0) {
        head($argv[2]);
     exit(0);
  }
  else {
$pids[] = $pid;
      }
    }


Спасибо

Что я уже пробовал:

else if ($pid == 0) {
        head($argv[2]);

if ($pid == 0)
head($argv[1]);
     exit(0);

1 Ответов

Рейтинг:
4

Thomas Daniels

К несчастью, страница установки pcntl[^] скажет:

Цитата:
В настоящее время этот модуль не будет функционировать на платформах, отличных от Unix (Windows).


Kepiting Bula

Я имею в виду решение на этом форуме, но это как unix и из ОС windows, больше никаких предложений

Thomas Daniels

Это все, что я могу найти.:

https://stackoverflow.com/questions/2458005/forking-in-php-on-windows

Kepiting Bula

Эти решения запускают исполняемые файлы windows внутри php-файлов, любое предложение

Thomas Daniels

Суть в том, что вы имитируете вилку, запустив тот же процесс, что и текущий. Но у меня самого нет опыта в этом деле.

Kepiting Bula

Я вижу, вы говорите, что это не работает с ОС windows, и запущенный процесс-это один или тот же процесс, но список кода не тот же самый

Thomas Daniels

Да, понятие "разветвление" на самом деле не существует в Windows.

Kepiting Bula

любое предложение,

Thomas Daniels

Больше нет, я дал вам ссылку, которая могла бы помочь найти ближайшую возможную альтернативу, но других ресурсов я не нашел.

Я также не знаю, что хочет сделать ваш код, возможно, есть альтернатива разветвлению, и вам вообще не нужно разветвляться. Но я ничего не могу сказать об этом, если не знаю вашего варианта использования.

Kepiting Bula

мой вариант использования

$pid = pcntl_fork();

  if ($pid == -1) {
die("ERROR");
  }
  else if ($pid == 0) {
        head($argv[2]);
     exit(0);
  }
  else {
$pids[] = $pid;
      }
    }

foreach ($pids as $pid) {
  pcntl_waitpid($pid, $status);
}

}


Я пытаюсь измениться:
else if ($pid == 0) {
        head($argv[2]);

if ($pid == 0)
head($argv[1]);
     exit(0);

Thomas Daniels

Я не думаю, что знаю достаточно о pcntl_fork, чтобы знать, что именно делает этот скрипт, не говоря уже о том, чтобы предложить альтернативу... так что извините, я не думаю, что смогу вам помочь дальше.

Kepiting Bula

не забывай и учись вместе

Kepiting Bula

Спасибо за справку

[no name]

Спасибо!