gpt4 book ai didi

java - 如何使用 PHP 运行批处理文件?

转载 作者:行者123 更新时间:2023-12-01 13:09:42 26 4
gpt4 key购买 nike

我尝试使用多种语法在 PHP 中打开 .bat 文件,并且它们工作正常。它运行该文件并存储输出。但我手头上有一个新问题,我需要从 PHP 启动一个服务器程序。

假设我有一个服务器程序“server.java”和一个客户端程序“client.java”。需要先运行服务器,然后运行客户端。我创建了一个批处理文件来运行此服务器程序作为“server.bat”。是否可以从 PHP 端启动此 server.bat 文件并使其在后台运行,直到客户端完成其进程?

最佳答案

您正在寻找exec function .

请注意此功能的一些危险,即:

When allowing user-supplied data to be passed to this function, use escapeshellarg() or escapeshellcmd() to ensure that users cannot trick the system into executing arbitrary commands.

Note: If a program is started with this function, in order for it to continue running in the background, the output of the program must be redirected to a file or another output stream. Failing to do so will cause PHP to hang until the execution of the program ends.

读取输出

exec 命令有一个名为 $output 的可选变量,可用于显示通过 PHP 运行的命令的输出。但是,这仅在子进程(在本例中为批处理文件)退出后才有效,这对于服务器脚本不起作用。

要在脚本仍在运行时显示信息,我们必须将脚本的输出重定向到文件,然后读取该文件。为了证明这一点,我们将举一个例子:

exec("server.bat");

并添加重定向到“server_log.txt”

exec("server.bat > server_log.txt");

运行后,我们可以通过读取“server_log.txt”来检查批处理文件的输出关于从 PHP 读取文件的一个很好的(虽然有点过时)教程可以在 here 找到。 .

关于java - 如何使用 PHP 运行批处理文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22977635/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com