2010-06-01 2 views
3

Как я могу убедиться, что функция startProcess(); вызывается, но без остановки выполнения для myFunction(). Я предполагаю, что есть способ вызвать функцию и не дать ей вернуть ее значение, чтобы таким образом добиться этого?PHP: Предотвратить возврат функции?

Псевдо-код:

function myFunction() { 

    startProcess(); 

    return $something;  
} 

function startProcess() { 
    sleep(5); 
    // Do stuff that user doesn't should have to wait for. 
} 

ответ

5

Вы не можете это сделать. В PHP есть несколько функций, которые позволяют асинхронный ввод-вывод, но ничего подобного параллелизму, который вам нужен.

Причина отсутствия поддержки языка заключается в том, что PHP предназначен для выполнения недолговечных сценариев, в то время как параллелизм управляется демоном HTTP.

Смотрите также:

1

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

К сожалению, PHP этого не делает. Существуют некоторые функции ввода-вывода, которые являются асинхронными, но в целом вы не можете выполнять параллельную обработку в PHP.

3

Чтобы сделать небольшое дополнение к ответу Artefecto, есть люди, которые попытались воссоздать ситуацию с подобными темами. Вы можете найти некоторую информацию об этом, используя Google, но я сомневаюсь, что это будет полезно, поскольку это слишком экспериментально и, вероятно, довольно ненадежно.

Нашли ссылку, которая может быть полезна для вас.

1

Что это вы хотите startProcess() делать? Есть много способов удержать пользователя от необходимости ждать.

Письма являются хорошим примером: поток, который запускает mail(), вращается, пока сообщение не будет принято или отклонено; вы не хотите, чтобы пользователь должен был ждать этого. Таким образом, вы ставите в очередь задачу, а затем обрабатываете свою очередь на cron.

function myFunction() { 
    addToQueue(); 
    return $something;  
} 

function addToQueue() { 
    // add stuff to the queue of tasks 
} 

function runQueue() { 
    // process the queue of tasks; called by cron. 
} 
1

Вы смотрели на Gearman для сельского хозяйства этого вида фоновой задачи?

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

  • Нет связанных вопросов^_^