我知道也有类似的问题,但它们并不能解决我的问题。。。
在从repo中签出文件夹之后(工作正常)。从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/0A8288svn commit-m"SAVE DITAMAP"USER_WORKSPACE/0A8288/map.DITAMAP
1) 第一行(exec('svn-cleanup')。。。执行良好。2) 一旦我调用svn-commit,我的服务器就会挂起,一切都会进入地狱
apache错误日志显示此错误:[注意]子3424:等待240秒,等待4个工作线程完成
我没有使用php_svn模块,因为我无法在windows上编译它。
有人知道这里发生了什么吗?我可以从终端窗口执行完全相同的cmd,它执行得很好。
由于我在jquery exec()上找不到任何文档,我认为这是在调用php。我从文档页面复制了这个:
从apachephp脚本中调用exec()时,请确保处理stdout、stderr和stdin(如下面的示例所示)。如果您忘记了这一点,并且您的shell命令产生输出,sh和apache deamons可能永远不会返回(它们通常会在几分钟后超时)。从调用的网页来看,脚本似乎没有返回任何数据。
如果您想启动一个php进程,该进程继续独立于apache(使用不同的父pid)运行,请使用nohub。示例:
exec('nohup-php process.php>process.out 2>process.err</dev/null&');
希望它能帮助
好的,我找到问题了。
事实上,它与后台运行的exec没有任何关系,尤其是因为一个文件的提交不会花费很多时间。
问题是提交需要一个没有显示的用户名和密码,这只会导致apache挂起。
为了解决这个问题,我更改了安装svn的文件夹中的svnserve.conf,并将其更改为允许非身份验证用户进行写访问。
我认为你通常不想这样做,但我的网站已经验证了用户名并在登录时传递
或者,您可以