- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
我刚刚将网站从一台主机移至另一台主机。服务器环境非常相似(LAMP 堆栈),所有代码在传输时都能正常工作,除了一行。我对它进行了一些改动以进行测试,但仍然得到非常奇怪的结果:
<?php
$out = `php ../test/test.php 123 abc`;
?>
在 SSH 中从命令行运行 php ../test/test.php 123 abc
时,它工作正常,正如预期的那样。当我在 SSH 中运行:php testrunner.php
(上面只有“$out”行的文件)时,它也按预期工作。
但是一旦我从浏览器加载testrunner.php
,它就会挂起。使用 ps aux | grep php
来监视进程,进程似乎产生和消亡(为简洁起见被截断):
myuser 12790 0.0 0.3 259016 45284 . . . 0:00 php ../test/test.php 123 abc
如果我将“$out”行修改为:
<?php
$out = `php ../test/test.php 123 abc &`;
?>
然后我使该脚本在后台运行。令人惊讶的是,几秒钟后,当我运行 ps aux | grep php
再次显示相同的内容,但使用了新的 PID。我一直在运行 ps aux 并不断看到它具有不同的 PID。这会持续相当长的一段时间(几秒,甚至一分钟)。
这对我来说很奇怪,因为 test.php 只有一行来回显一些用于测试目的的文本。
在终端上工作正常。从 web 调用时挂起并有其他奇怪的行为。我错过了什么吗?
(我通过将输出重定向到一个日志文件来证明,当从 Web 浏览器运行时,PHP 脚本似乎调用了 ITSELF 而不是另一个脚本 test.php。当它表现得像这样时,它不会'没有收到任何 $argv
参数...但是当我从命令行运行它时,一切都很好!奇怪吗?)
更新:天哪……我只是在观察服务器进程,test.php 的 PHP 进程开始失控。它们成百上千个进程:服务器停机一分钟,SSH 和一切。现在恢复了,但我无法解释发生了什么。代码中没有循环,所涉及的两个文件都非常简单,为了测试目的而隔离...
当我的主机响应我的支持请求时,我正在与他们一起工作,以查看这是否与环境相关或者是什么...仅通过更改服务器环境可能导致这种情况发生的原因是什么?
最佳答案
我的房东 A Small Orange 提供了帮助,但最后,我或他们能想到的只有(来 self 的支持票):
... that SuPHP or some other security-based software we have running as part of our stack is preventing your processes from spawning new processes (because that behavior can be insecure for obvious reasons) ...
无论如何,这些脚本在我的 Macbook(与 nginx 的配置非常不同)和我旧主机的 LAMP 堆栈上运行良好,ASO 具有类似的设置。
也许我会询问在不调用命令行的情况下生成长时间运行的进程,这样调用脚本就不会在另一个问题中被阻塞。
关于php - 从 PHP 脚本调用 "php"命令导致奇怪的进程行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14765708/
我有这种来自 Google map 自动完成的奇怪行为(或者我可能错过了某事)...想法?奇怪的: 您在输入中输入某物,例如“伦敦” 您按 [ENTER] 你按下 [CLEAR] 按钮 你点击进入'输
这段代码与《Learning Java》(Oracle Press Books)一书中的代码完全一样,但它不起作用。我不明白为什么它不起作用,它应该起作用。我用 OpenJDK 和 Sun JDK 7
示例 1 中究竟发生了什么?这是如何解析的? # doesnt split on , [String]::Join(",",("aaaaa,aaaaa,aaaaa,aaaaa,aaaaa,aa
我需要获得方程式系统的解决方案。为此,我使用函数sgesv_()。 一切都很好,它使我感到解决方案的正确结果。 但是我得到一个奇怪的警告。 警告:从不兼容的指针类型传递'sgesv_'的参数3 我正在
我目前在制作动画时遇到一个奇怪的问题: [UIView animateWithDuration:3 delay:0
alert('works'); $(window).load(function () { alert('does not work'); });
我的代码: public class MyTest { public class StringSorter implements Comparator { public
我正在学习 JavaScript。尝试理解代码, function foo (){ var a = b = {name: 'Hai'}; document.write(a.name +''
这个问题不太可能帮助任何 future 的访问者;它只与一个小的地理区域、一个特定的时间点或一个非常狭窄的情况有关,这些情况并不普遍适用于互联网的全局受众。为了帮助使这个问题更广泛地适用,visit
这按预期工作: [dgorur@ted ~]$ env -i env [dgorur@ted ~]$ 这样做: [dgorur@ted ~]$ env -i which date which: no
struct BLA { int size_; int size()const{ return size_; } } int x; BLA b[ 2 ]; BLA * p = &b[
我有以下代码: #test img {vertical-align: middle;} div#test { border: 1px solid green; height: 150px; li
我想大多数使用过 C/C++ 的人都对预处理器的工作原理有一定的直觉(或多或少)。直到今天我也是这么认为的,但事实证明我的直觉是错误的。故事是这样的: 今天我尝试了一些东西,但我无法解释结果。首先考虑
我想为 TnSettings 做 mock,是的,如果通过以下方法编写代码,它就可以工作,问题是我们需要为每个案例编写 mock 代码,如果我们只 mock 一次然后执行多个案例,那么第二个将报告异常
我的项目中有以下两个结构 typedef volatile struct { unsigned char rx_buf[MAX_UART_BUF]; //Input buffer over U
Regex rx = new Regex(@"[+-]"); string[] substrings = rx.Split(expression); expression = "-9a3dcb
我的两个应用程序遇到了一个奇怪的问题。这是设置: 两个 tomcat/java 应用程序,在同一个网络中运行,连接到相同的 MS-SQL-Server。一个应用程序,恰好按顺序位于 DMZ 中可从互联
我目前正在与 Android Api Lvl 8 上的 OnLongClickListener 作斗争。 拿这段代码: this.webView.setOnLongClickListener(new
这个问题不太可能帮助任何 future 的访问者;它只与一个小的地理区域、一个特定的时间点或一个非常狭窄的情况相关,这些情况并不普遍适用于互联网的全局受众。为了帮助使这个问题更广泛地适用,visit
只是遇到了奇怪的事情。我有以下代码: -(void)ImageDownloadCompleat { [self performSelectorOnMainThread:@selector(up
我是一名优秀的程序员,十分优秀!