асинхронный — запускать скрипт PHP в фоновом режиме в Windows

У меня есть скрипт a.php, и я хочу вызвать (долго работающий) скрипт b.php из a.php на моем компьютере с Windows.

Это пример файла a.php:

<?php
$command = 'start /B php b.php > NUL';
pclose(popen($command, 'r'));
?>

и это пример файла b.php

<?php
sleep(30);
?>

но это не работает, a.php ждет, пока b.php закончится.

Что я могу сделать, чтобы запустить b.php в фоновом режиме?

ОБНОВИТЬ

Возможно, проблема не в том, как я называю b.php, а в том, как называется a.php. Вот более полный пример того, что я делаю:

Пользователь вызывает webservice index.php? Cmd = download&source = s1 (я проверяю это с почтальоном)

index.php:

<?php
include_once 'a.php';
if($_GET['cmd'] == "download") {
$source = $_GET['source'];
$flag = startDownload($source);
if($flag) {
echo("Download was initialized");
} else {
echo("Download not started");
}
}
?>

a.php:

<?php
function startDownload($source) {
if($source == "s1") {
$command = 'start /B php b.php > NUL';
pclose(popen($command, 'r'));
} else {
$command = 'start /B php c.php > NUL';
pclose(popen($command, 'r'));
}
return true;
}
?>

b.php:

<?php
$ch = curl_init();
$source = "http://example.com/bigfile.zip";
curl_setopt($ch, CURLOPT_URL, $source);
$data = curl_exec($ch);
curl_close($ch);

$file = fopen("/", "w+");
fputs($file, $data);
fclose($file);
?>

0

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]