wordpress   发布时间:2022-04-02  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了windows – 使用Symfony Process运行异步PHP任务大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

概述

对于耗时的任务(电子邮件发送,图像处理……你明白了),我想运行异步 php任务. 它是quite easy on Linux,但我正在寻找一种适用于Windows的方法. 我希望它变得简单,应该如此.没有artillery,没有SQL排队,没有一次又一次installing stuff …我只是想运行一个该死的异步任务. 所以我尝试了Symfony Process Component. 问题是,同
对于耗时的任务(电子邮件发送,图像处理……你明白了),我想运行异步 PHP任务.

它是quite easy on Linux,但我正在寻找一种适用于Windows的方法.

我希望它变得简单,应该如此.没有@L_502_2@,没有sql排队,没有一次又一次installing stuff …我只是想运行一个该死的异步任务.

所以我尝试了Symfony Process Component.
问题是,同步运行任务工作正常,但在异步运行时,它会沿主脚本退出.

有没有办法来解决这个问题?

composer require symfony/process

的index.PHP

<?PHP
require './bootstrap.PHP';
$logFile = './log.txt';

file_put_contents($logFile,'');

append($logFile,'script (A) : '.timestamp());

$process = new Process('PHP subscript.PHP');
$process->start(); // async,subscript exits prematurely…
//$process->run(); // sync,works fine

append($logFile,'script (B) : '.timestamp());

subscript.PHP

<?PHP
require './bootstrap.PHP';
$logFile = './log.txt';

//ignore_user_abort(true); // doesn't solve issue…

append($logFile,'subscript (A) : '.timestamp());
sleep(2);
append($logFile,'subscript (B) : '.timestamp());

bootstrap.PHP

<?PHP
require './vendor/autoload.PHP';
class_alias('Symfony\Component\Process\Process','Process');

function append($file,$content) {
    file_put_contents($file,$content."\n",FILE_APPEND);
}

function timestamp() {
    list($usec,$seC) = explode(' ',microtime());
    return date('H:i:s',$seC) . ' ' . sprintf('%03d',floor($usec * 1000));
}

结果

script (A) : 02:36:10 491
script (B) : 02:36:10 511
subscript (A) : 02:36:10 581
// subscript (B) is missing

解决方法

当异步过程完成时,主脚本必须等待.试试这段代码

$process = new Process('PHP subscript.PHP');
$process->start();
do {
    $process->checkTimeout();
} while ($process->isRunning() && (sleep(1) !== falsE));
if (!$process->issuccessful()) {
   throw new \Exception($process->getErrorOutput());
}

大佬总结

以上是大佬教程为你收集整理的windows – 使用Symfony Process运行异步PHP任务全部内容,希望文章能够帮你解决windows – 使用Symfony Process运行异步PHP任务所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。