当前位置: 首页 > news >正文

什么网站可以找到做餐饮的会计wordpress转移服务器后不能访问

什么网站可以找到做餐饮的会计,wordpress转移服务器后不能访问,百度一下 你就知道官网 新闻,网站建设报价多少之前在工作中使用 Laravel Octane 的 concurrently 处理并发时,发现在队列和定时任务中不会触发并发效果。经过分析,作了如下猜测:队列和定时任务都属于一个独立的进程,与 Octane 服务无关,而 Octane concurrently 恰恰…

之前在工作中使用 Laravel Octane 的 concurrently 处理并发时,发现在队列和定时任务中不会触发并发效果。经过分析,作了如下猜测:队列和定时任务都属于一个独立的进程,与 Octane 服务无关,而 Octane concurrently 恰恰需要在 Octane 环境下才能运行。

后来通过代码进行环境检测和查看 php 的进程,证明猜想成立。

info('check env', ['served by octane' => isset($_SERVER['LARAVEL_OCTANE']) && ((int)$_SERVER['LARAVEL_OCTANE'] === 1),'on swoole server' => (extension_loaded('swoole') || extension_loaded('openswoole')) && app()->bound(Server::class)
]);

为了能够在任意代码中实现并发,我们研究参考了 Hyperf 框架关于协程的代码,然后抽取了如下两个类:

<?phpnamespace App\Services;use App\Exceptions\ParallelExecutionException;
use Laravel\Octane\Facades\Octane;
use Throwable;
use Swoole\Coroutine as Co;class Parallel
{protected array $callbacks = [];protected array $results = [];/*** @var Throwable[]*/protected array $throwables = [];public function add(callable $callable, $key = null): void{if (is_null($key)) {$this->callbacks[] = $callable;} else {$this->callbacks[$key] = $callable;}}public function wait(bool $throw = true): array{if (isset($_SERVER['LARAVEL_OCTANE']) && ((int)$_SERVER['LARAVEL_OCTANE'] === 1)) {return Octane::concurrently($this->callbacks, 300000);}app('log')->useLoggingLoopDetection(false);Co\run(function () {foreach ($this->callbacks as $key => $callback) {Co::create(function () use ($callback, $key) {try {$this->results[$key] = $callback();} catch (Throwable $throwable) {$this->throwables[$key] = $throwable;unset($this->results[$key]);}});}});if ($throw && ($throwableCount = count($this->throwables)) > 0) {$message = 'Detecting ' . $throwableCount . ' throwable occurred during parallel execution:' . PHP_EOL . $this->formatThrowAbles($this->throwables);$executionException = new ParallelExecutionException($message);$executionException->setResults($this->results);$executionException->setThrowAbles($this->throwables);unset($this->results, $this->throwables);throw $executionException;}app('log')->useLoggingLoopDetection(true);return $this->results;}private function formatThrowAbles(array $throwables): string{$output = '';foreach ($throwables as $key => $value) {$output .= sprintf('(%s) %s: %s' . PHP_EOL . '%s' . PHP_EOL, $key, get_class($value), $value->getMessage(), $value->getTraceAsString());}return $output;}
}
<?phpnamespace App\Exceptions;use RuntimeException;class ParallelExecutionException extends RuntimeException
{protected array $results = [];protected array $throwables = [];public function getResults(): array{return $this->results;}public function setResults(array $results): void{$this->results = $results;}public function getThrowAbles(): array{return $this->throwables;}public function setThrowAbles(array $throwables): array{return $this->throwables = $throwables;}
}

其中,第一个类的作用是检测系统是否运行在 Octane 环境下,是则调用Octane concurrently,否则就执行 Swoole 协程代码,使用起来也比较简单:

$parallel = new Parallel();
$parallel->add(fn() => $this->analysisStructure(), 'structure');
$parallel->add(fn() => $this->analysisHabit(), 'habit');
['structure' => $structure,'habit' => $habit,
] = $parallel->wait();

之所以没有完全使用 Swoole 协程,是因为相比之下,Octane 代码更加优雅,我们在期待着某天更新后,Octane concurrently 也能直接在队列中运行使用。

第二个类的作用比较简单,就是对协程中异常的一个定义。

另外在分析过程中,我们也发现了一个比较有意思的事情:
在这里插入图片描述

如图所示,当我在路由中运行检测代码时,Octane 和 Swoole Server 都为 true;在控制器中运行检测代码时,又只有 Octane 为true;为什么会有这样的区分?我个人猜测是 Octane 在将框架代码读进内存时,特意跳过了控制器中的代码,以避免数据更新不及时等问题。

有知道具体原因的小伙伴,欢迎留言探讨。

http://www.yayakq.cn/news/530534/

相关文章:

  • 杭州手机网站建设美图秀秀网页版在线制作
  • 自己做的网页怎么上传到网站做ui要上那些网站
  • 做外贸必看的网站和论坛有哪些深圳市建设工程合同备案网站
  • 福州市城乡建设网站张麒蛰top域名
  • 湛江做网站优化网页建设网站代码
  • 深圳竞价网站wordpress新建会员主页
  • 网站页面架构域名年费多少网站建设
  • 哈尔滨建站的系统图片转链接生成器在线
  • 平阳网站建设昆明网建
  • 瀑布流 网站 php 源码建设银行企业网站首页
  • 做网站发布网o2o网站建设方案 多少钱
  • 自己做网站可以赚钱吗做网页怎么在网站播放视频
  • 浙江市建设网站朋友圈软文
  • 有一个网站叫浪什么个人网站设计背景图
  • 域名 备案 没有网站吗上海人才网官网招聘招聘
  • 宁波网站建设服务商wordpress视频广告插件
  • 付费做SPaSS统计分析的网站宁夏建设厅网站
  • 气象网站建设管理的不足企业宣传文案模板
  • 微信网站公司无锡网站优化哪家好
  • 云南建设工程招标网站搭建网站流程视频
  • 厚街镇做网站郑州网站推广排名公司
  • 西宁做网站君博领先做视频网站 带宽多少才合适
  • 普陀做网站价格怎样建网站?
  • 网站seo外包公司电脑上怎么做设计效果图
  • 江阴网站设计哪家好磁力链搜索引擎入口
  • 建设投票网站的目的什么网站做前端练手好
  • 做网站需要电脑吗做的网站提示不安全问题
  • 网站的后台是开发做的上虞网站建设公司
  • 长沙企业建站程序濮阳做网站的价格
  • 北京做校园的网站网站建设的主要技术指什么