我知道也有类似的问题,但它们并没有解决我的问题......
从存储库中检查文件夹后(工作正常)。 从 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/