php exec(svn commit) 挂起

标签 php svn exec commit freeze

我知道也有类似的问题,但它们并没有解决我的问题......

从存储库中检查文件夹后(工作正常)。 从 jquery 调用一个方法来在 php 中执行以下内容。

exec ('svn cleanup '.$checkout_dir);
session_write_close(); //Some suggestion that was supposed to help but doesn't
exec ('svn commit -m "SAVE DITAMAP" '.$file);

这些将输出以下内容: svn 清理 USER_WORKSPACE/0A8288 svn commit -m“保存DITAMAP”USER_WORKSPACE/0A8288/map.ditamap

1) 第一行 (exec ('svn cleanup')...执行得很好。 2)一旦我调用 svn commit 然后我的服务器就会挂起,一切都会陷入困境

apache 错误日志显示此错误: [通知]子级 3424:再等待 240 秒才能完成 4 个工作线程。

我没有使用 php_svn 模块,因为我无法让它在 Windows 上编译。

有人知道这是怎么回事吗?我可以从终端窗口执行完全相同的命令,它执行得很好。

最佳答案

由于我找不到任何有关 jquery exec() 的文档,我认为这是调用 php.我从 documentation 复制了这个页面:

从 apache php 脚本中调用 exec() 时,请确保处理 stdout、stderr 和 stdin(如下例所示)。如果您忘记了这一点并且您的 shell 命令生成了输出,则 sh 和 apache 守护进程可能永远不会返回(它们通常会在几分钟后超时)。从调用网页来看,脚本似乎没有返回任何数据。

如果您想启动一个继续独立于 apache(具有不同的父 pid)运行的 php 进程,请使用 nohub。示例:

exec('nohup php process.php > process.out 2> process.err

希望对你有帮助

关于php exec(svn commit) 挂起,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9549906/

相关文章:

MySQL 版本控制 - 颠覆

c++ - execl with wget, child process, unix - 为什么它不起作用

php - 如何卸载 Phabricator

php - 使用ajax填充2个输入

svn - 如何删除 SVN 工作目录中的所有更改?

asp.net - Subversion 和 ASP.NET 网站项目的 Bin 文件夹

php - 结果数组中是否有使用列 (PK) 作为索引的 "mysqli_fetch_all"?

php - 将 null 转换为字符串

php - 使用PHP正确执行ssh/命令行

exec - WSH .Exec 和 .Execute 将不会运行自定义 Jscript 文件