问题标签 [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.

0 投票
1 回答
245 浏览

symfony - Symfony 进程吃掉终端控制代码

所以我正在Process为一些命令运行 Symfony,我注意到当我将这些命令写入 Symfony 时OutputInterface,它没有显示颜色或进度条。我认为命令(npm、artisan、ls 等)正在使用终端控制代码,其中一个类正在使用非标准 ASCII 字符。

编辑:我已经做了一些挖掘,我相信 SymfonyStreamOutput默认使用它的类。它似乎能够以彩色输出,我试过告诉它OUTPUT_RAW. 那里没有豆子。也许问题出在其他地方......

有没有一种内置的方法来告诉这些类不要这样做?我怎样才能得到我漂亮的输出?

0 投票
1 回答
1055 浏览

php - 从 PHP 运行 Node.js 脚本 - 输出被截断为 512 个字符

我们使用 Symfony 进程从 PHP 运行 node.js CLI 脚本。

该脚本始终在一行中将整个响应打印为 JSON。

响应以某种方式被截断为 512 个字符。

我只发现了这一点xdebug.var_display_max_data => 512 => 512php.ini但看不到这是如何相关的。

A) 测试节点脚本

  1. 从终端节点脚本$ node user-update.js parameters返回所有情况下的完整结果 - 比如 629 个字符。
  2. 来自 Symfony Process 节点脚本的响应被截断为 512 个字符。

B) 测试 Symfony 进程

  1. $cmd = 'node user-update.js parameters';- 截断为 512。
  2. $cmd = 'php -r \'for($i=0; $i<520; $i++){ echo "."; }\'';- 不截断。
  3. $cmd = 'cat long_one_line.txt';- 打印完整文件。一行 1650 个字符。

C) 尝试使用 PHP shell 函数

可能是什么原因和解决方案?

  • 节点 v7.6.0
  • PHP 7.1.2
0 投票
0 回答
506 浏览

php - symfony 进程的进程栏

我有一个长期运行的任务,我已将其作为一个进程合并到我的 symfony 项目中。这就是我所说的过程

我的进程目前没有任何输出(它正在解析 xml 文件并将数据推送到 db)。完成 currprogress 变量后,应该将其推送到我的 .twig 模板中,然后它将填充进度条。

我需要显示文件解析的进度(即处理了多少项目,因为它可以达到 100k 行,并且该过程可以运行 2-3 小时)。

目前,我无法从我的流程中获取增量输出以将其推送到我的 temaplte。最好的方法是什么!

0 投票
2 回答
1810 浏览

php - Symfony 进程 - 后台任务

我想用 Symfony Process 组件运行一个孤立的后台进程。我不能使用 kernel.terminate 事件。这是我试图做的:

这是我想运行的过程:

这是我想运行我的进程的脚本:

问题是,test.php终止后,script.php无法正常工作。主脚本的终止会杀死所有子进程。是否可以让孤立进程与 Symfony 进程一起运行?

0 投票
1 回答
384 浏览

php - 从 docker 到 websocket 的彩色输出

这可能是一个有点复杂的问题,但我愿意尝试向我提出的任何和所有建议。

我正在运行一个克隆 git 存储库的 docker 实例,它是一个 php 7 apache docker 实例:

使用Symfony 进程组件,我正在启动我的容器并传递我的环境变量。

我添加了xterm-256-color环境以确保我得到彩色输出(如果这是错误的,请纠正我)。

为了显示容器的输出,我使用 Symfony 进程组件将其发送到 websocket。

此时,我可以使用 socket.io 之类的东西将其实时显示在网页上。

问题是我想以正确的颜色显示 docker 输出,就像您通常在终端上看到的那样。不过,此时似乎所有格式和颜色都丢失了。

是否有任何网络可以将 docker 输出传递到 websocket 并仍然保持我的颜色以显示在网页上?

欢迎任何提示或技巧来指导我正确的方向,因为我在这里问了很多。

感谢阅读,加油。

编辑

需要明确的是,到目前为止,我还没有得到任何彩色输出,从 docker 容器给我的输出看起来就像这样(作曲家示例):

0 投票
0 回答
1468 浏览

php - Symfony 进程不执行命令

从控制器方法中,我想在后台运行 Symfony 命令。

该过程似乎有效,因为如果我执行$process->getPid();,我会得到一个 pid,但不会执行该命令。

我进行了调查,进行了几次测试,得到以下结果:当我注释类Process.php ( $this->status = self::STATUS_STARTED;) 的第 290 行时,将执行命令。如果没有,什么都不会发生。

有没有人遇到过这个问题?什么会导致这种情况?我指定我使用 Symfony 2.8.28 和 PHP 7.1.10。问题出现在 MacOS 和 Ubuntu Server 上。

当我转储进程并执行手动显示的命令时,一切正常。

0 投票
1 回答
287 浏览

php - 从 PHP 运行 AMPL 代码(Laravel 进程)

我正在尝试使用 Symfony Process 从 Laravel 运行 ampl .run (或任何 ampl 代码)文件。我的代码如下:

但我无法启动ampl。我收到如下错误:

""" 命令 "'./ampl'" 失败。\n \n 退出代码: 2(滥用 shell builtins)\n \n 工作目录: /usr/local/bin/amplitude/amplide.linux64\n \ n 输出:\n ================\n \n \n 错误输出:\n ================\n """

我怀疑这是目录中的权限错误,但是当我使用时:

它工作并输出文件和文件夹的列表。我知道ampl基本上是一个终端程序,那么我如何访问和写入命令呢?

如果有人可以解释如何从 Process 访问终端程序,我认为这将非常有帮助。先感谢您。

0 投票
1 回答
543 浏览

python - docker and python using symfony process

I am using Laradock and want to be able to run a python script from my laravel app using Symfony Process. From inside the root on my container I can run "python3 script_name.py arg1" and it runs just fine. pip list shows all modules needed. When I run it from inside Laravel, it tells me:

I have used a non-docker Laravel app to do this just fine, using:

What am I missing?

0 投票
1 回答
472 浏览

python-3.x - 从远程服务器(Debian)上的 Laravel 控制器运行 Python3 时出现 Symfony/Process 异常

我正在尝试执行一个 python 脚本(3.6.5),它位于我的 Laravel 应用程序文件夹中的一个文件夹中。从控制器调用脚本并检索脚本的输出。我正在使用 Symfony/process 来执行脚本,如下面的代码所示:

在我的本地主机中,无论​​是从我的终端还是从我正在运行的应用程序通过 HTTP 请求,都可以毫无问题地调用该脚本。但是,在我将我的应用程序版本上传到我的远程服务器(即 Debian)后,我得到了以下异常:

异常指出 python 脚本中的导入错误。但是,当我直接或通过 Artisan 命令从远程服务器的终端执行脚本时,一切正常。对正在发生的事情有任何想法吗?

提前致谢!

0 投票
1 回答
771 浏览

php - 带有 git clone 的 Symfony 进程进度条

我正在使用 Symfonie 的 Process 组件,我正在运行 git clone 命令并希望显示它的进度条到目前为止,我已经这样做了:

但这仅在克隆完成后显示完成的进度条