问题标签 [symfony-process]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
symfony - 入队控制器动作过程
Symfony 2.8
使用https://github.com/j-guyon/CommandSchedulerBundle管理定期命令执行。
这些命令执行中的每一个都根据命令参数调用特定的服务。
在服务中(它们都实现相同的接口并扩展抽象类),计划是创建和执行子流程(如果可能,异步)
根据您的经验,处理这些子流程的最佳方式是哪一种?
为每个子流程创建一个 Process 对象(基于 Controller Action),并同步运行它们(https://symfony.com/doc/2.8/components/process.html)
使用某种 Queue Bundle 来处理所有这些(进程或消息或其他),例如https://php-enqueue.github.io/symfony 或https://github.com/armetiz/LeezyPeanstalkBundle (任何其他建议? )
干杯!
symfony - 来自进程的控制器操作
Symfony 2.8
在从命令调用的服务中,有没有办法将控制器操作作为流程对象执行/调用?或者我是否必须将该控制器操作转换为命令才能被进程调用?
我需要执行已经编码到控制器操作中的迭代 BL(业务逻辑)元素。
调用链是:
预定命令->服务容器-> N个进程或任何带有BL的东西。
服务必须控制/监控流程的执行。(启动、运行、停止等)
还有什么办法吗?
干杯!!
javascript - 使用 Symfony 进程从 Laravel 执行时出现 Nodejs 错误
我正在尝试使用ProcessNodejs
从Laravel
控制器执行文件:Symfony
node/test.js
位于 中,如下Laravel public directory
所示:
从Laravel
我运行此程序时,出现以下错误:
内部/模块/cjs/loader.js:638 抛出错误;^ 错误:在 >> Function.Module._resolveFilename (internal/modules/cjs/loader.js:636:15) 找不到模块“scrapedin”
如果我从终端运行以下命令,脚本将正常工作:
如果我从终端运行以下命令,则会收到与上述相同的错误:
我猜,Laravel controller
我需要执行test.js
保存在服务器根目录中的文件,而不是test.js
位于. 我很难弄清楚如何做到这一点。public/node
Laravel app
php - Laravel Symfony 进程不会停止
我正在尝试在 Laravel 控制器中运行以下脚本:
如果我从终端运行以下命令,我会得到预期的输出
从 Laravel 控制器运行脚本时,浏览器不会停止加载,直到超时。(504网关超时)
test.js 文件看起来像这样
php - Symfony - 进程运行抛出异常 - 在命令行上执行有效
我在 LaTeX 的帮助下生成 PDF 文件时遇到问题。该解决方案是使用 Laravel 框架(第 8 版)创建的。我安装了一个新的“Windows 2019 Datacenter”服务器,以后应该在该服务器上托管该网站。在服务器上,生成 PDF 文件的命令失败。在我的本地开发机器(Windows 10)上,该命令运行良好。我在两台机器上运行 PHP 7.4 和symfony/process
v5.0。
这是创建命令的代码:
这是错误日志所说的:
[2020-11-16 06:13:55] Live.ERROR:命令“C:_Tools\texlive\2020\bin\win32\pdflatex.exe -jobname=m7EkMDQFggshi4gGpsDD”-output-directory=C:/_App/Live /public/Berichte/" "C:/_App/Live/app/Classes/Bericht/Tex/Working/m7EkMDQFggshi4gGpsDD"" 失败。
退出代码:1(一般错误)
工作目录:C:_App\Live\public
输出:== ==============
错误输出:
================ {"userId":1770,"exception":"[object] (Symfony\Component\Process\Exception\ProcessFailedException(code: 0): 命令" C:\_Tools\texlive\2020\bin\win32\pdflatex.exe -jobname=m7EkMDQFggshi4gGpsDD "-output-directory=C:/_App/Live/public/Berichte/" "C:/_App/Live/app/Classes/ Bericht/Tex/Working/m7EkMDQFggshi4gGpsDD"" 失败。
退出代码:1(一般错误)
工作目录:C:\_App\Live\public
输出:== ==============
错误输出:
================ 在 C:\_App\Live\app\Classes\Documents\PDF.php:21) [stacktrace] #0 C:\_App\Live\app\ Classes\Documents\PDF.php(13): App\Classes\Documents\PDF->executeProcess() #1 C:\_App\Live\app\Classes\Bericht\Bericht.php(239): App\Classes\Documents \PDF->createPDFFromLaTexFile() #2 C:\_App\Live\app\Http\Controllers\Bericht\BerichtController.php(51): App\Classes\Bericht\Bericht->pdfErzeugen() #3 [内部函数]: App\Http\Controllers\Bericht\BerichtController->erzeugen() ...
奇怪的是,如果我在命令窗口本身中运行命令,一切正常并且 PDF 已成功创建。
我不确定,为什么第一个参数不包含在"
. 也许这可能是命令失败的原因?或者可能是运行命令的授权问题?
更新
如果尝试使用 PHPproc_open()
命令创建文件。这是代码:
同样的行为。如果$command
手动在命令窗口中运行变量中的命令,则正在生成 PDF。但是当我只运行代码时,没有生成 PDF 文件。到目前为止,我可以说,命令本身是正确的。也许这真的是服务器系统的权限问题?我有另一个想法,如果它可能是使用 PHP 7.4 32 位或 64 位的问题?目前安装的是 PHP 7.4 的 x64 版本。
php - 如何在 laravel 的队列作业中运行 Symfony Process 功能
现在我正在做一些项目使用 laravel 框架。我可以在队列作业中运行 Symfony Process 功能吗?
现在我想为此使用 Symfony Process 功能进行一些推荐
如果在队列之外。此代码可以成功运行。但是当我想让它在队列作业中运行时。它不能。
我如何能够在作业 laravel 的队列中运行 symfony Process 函数。
python - Laravel 运行 Python 脚本返回错误库未找到
我正在使用新的流程和process->run()
方法在 Laravel 中运行 Python 脚本。
问题是进程->运行它会引发以下错误。
当我更改路径并使用绝对路径时没有这样的文件或目录将返回以下错误。
回溯(最近一次通话):文件“/home/zantezu/PhpstormProjects/case-medical/public/python/ARIMA/KarlStorzARIMA.py”,第 2 行,在 import pyodbc ModuleNotFoundError: No module named 'pyodbc'
运行进程的代码放在HomeController.php
. 我有另一个 python 脚本在不同的控制器中运行,没有任何问题,它也使用 PyODBC。我不确定问题可能是什么,我确实已经更改了文件夹的 chmod,如果我执行 pip install PyODBC,它会说它已经安装。我的电脑上安装了 Anaconda。这可能是问题吗?
php - Symfony 进程 - 找不到命令
我正在尝试使用 Symfony Process Component 执行 ffmpeg 命令,但未处理命令。我究竟做错了什么?我得到错误
命令“'ffmpeg -i [...........]'失败。退出代码:127(找不到命令)”
laravel - Laravel 进程参数转义
我正在使用 Laravel 运行一个进程,它依赖于 Symfony Process 组件,如下所示。
它可以正常工作,除非参数包含由 shell 解释的特殊字符。
当我直接在 shell 中运行我的进程时,我遇到了完全相同的问题。
如果我通过用简单的引号将参数括起来来转义参数,则效果很好。
因此,问题似乎来自 Process 组件如何转义参数。
从 Symfony 5 开始,Process 组件不再接受字符串作为构造函数参数
所以我不能转义参数如下
在我看来, Process 组件应该正确地转义参数,但显然不是这样。
有谁知道为什么特殊字符没有正确转义?我怎么能用简单的引号括住用户名和密码?
python - Laravel symfony 进程超过了 60 秒的超时时间
我在 Laravel 中遇到了一个我似乎无法解决的问题。作为我们应用程序的一部分,我们将大量作业添加到队列并使用queue:work执行它们。这是使用 Supervisor 设置的,并且运行良好。
我们在这个特定的命令上遇到了麻烦(其余的运行没有问题)。
在我们的应用程序中,我们使用调用自定义 shell 脚本命令
Symfony\组件\进程\进程;
但无论如何,我不断收到“进程超过 60 秒超时”错误。
错误: Symfony\Component\Process\Exception\ProcessTimedOutException:进程“'BIMTool.sh'”超过了 60 秒的超时。在 /var/www/app/vendor/symfony/process/Process.php:1263
BimTool.sh 脚本启动一系列涉及 Python 和 Anaconda3 的命令,以从 IFC 和点云生成 BIM 模型数据。我什至用“sleep 70”替换了 BimTool.sh 的内容,运行时仍然出现错误。
这是有问题的代码:
生成模型数据.php
我当然已经在 Stackoverflow(以及互联网上)搜索过这个问题,并尝试了我遇到的所有解决方案,但没有任何效果。
到目前为止我所尝试的(但没有一个有效)
- 将 php.ini 中的 max_input_time 设置更改为 0、-1 和 1200
- 将 php.ini 中的 max_execution_time 设置更改为 0、-1 和 1200
- $process->setTimeout(1200);
- $process->setIdleTimeout(1200);
- ini_set('max_execution_time', 0);
- 设置时间限制(0);
- 在 Supervisor 命令中添加了 --timeout=0
环境配置
Linode 运行 Ubuntu 18.04.5 LTS
LAMP-stack
Anaconda3
Laravel 5.8
主管配置
什么可能导致进程超过了 60 秒的超时错误?无论我尝试什么,我都会得到它。
编辑:(这为我解决了)
所以事实证明队列也有一个“缓存”。运行命令:
php工匠队列:重新启动
清除了作业缓存版本的队列。问题是我对代码的更改从未运行,因此请确保运行此命令以确保作业队列使用最新的代码。
感谢输入!