Linux上的广泛字符是否等同于atoi()?我可以找到MS(wtoi)的东西,但我可以在标准的Linux lib中找到任何东西.
在浏览器加载来自Apache服务器的PHP网页后,客户端javascript每5秒向PHP更新脚本发送一次AJAX请求.用JSON编码的AJAX响应可能非常大,所以我想简单地发送空数组'[]',如果自上一个AJAX请求以来没有变化,或者整个数组包含各种JSON对象,如果有的话自上次AJAX请求以来的更改.
要实现发送'[]'或完整数组,我正在使用会话变量.我的更新脚本如下所示:
<?php
session_start();
$output = '[]'; // server is running PHP 5.1 so can't use built in JSON encode
// code here queries a database and updates $output based on the query result
if (isset($_SESSION['previous_output'])) {
if ($_SESSION['previous_output'] == $output) {
echo '[]';
} else {
$_SESSION['previous_output'] = $output;
echo $output;
}
}
?>
Run Code Online (Sandbox Code Playgroud)
在实现上述脚本之后,Web服务器管理员注意到"太多"httpd进程被创建并闲置,最终使服务器停止运行.
当我删除涉及会话变量的代码时,一些httpd进程仍然存在,但"backlog"并没有那么糟糕,并且最终在对服务器产生明显影响之前进程消失.
Web服务器使用频率不高,可能随时为6个"访问者"提供服务.执行5秒AJAX请求的网页是"受保护的",这意味着一次只有一个管理员用户可以访问它.
我在PHP MySQLi Singleton上发现了另一篇关于Ajax-Requests的帖子,结束了许多听起来相似的过程,它引用了AJAX Push Engine(APE)项目,我想最终进一步调查.但是,我目前正在按时间和资源(例如无法设置APE服务器......),所以我很遗憾可以做些什么.
有关如何执行5秒AJAX请求而不会对服务器性能产生负面影响的任何建议?为什么使用会话变量会产生如此显着的差异?