我猜我的 PHP 时间和服务器时间之间存在差异。
当我在 PHP 中检查当前时间时,它显示正在使用 MST。但是,cron 作业没有在正确的时间运行。
如何检查服务器本身使用的时区,而不是 PHP 设置使用的时区?
我们正在从 1 个网络服务器设置转移到两个网络服务器设置,我需要开始在两台负载平衡机器之间共享 PHP 会话。我们已经安装(并启动)了memcached,所以我很高兴我可以通过只更改文件中的3 行(session.save_handler和session.save_path)来完成新服务器之间的共享会话:php.ini
我替换了:
session.save_handler = files
Run Code Online (Sandbox Code Playgroud)
和:
session.save_handler = memcache
Run Code Online (Sandbox Code Playgroud)
然后在主 Web 服务器上,我将session.save_path指向 localhost:
session.save_path="tcp://localhost:11211"
Run Code Online (Sandbox Code Playgroud)
在从属网络服务器上,我将 设置session.save_path为指向主服务器:
session.save_path="tcp://192.168.0.1:11211"
Run Code Online (Sandbox Code Playgroud)
工作完成,我测试了它并且它有效。但...
显然,使用 memcache 意味着会话在 RAM 中,如果机器重新启动或 memcache 守护进程崩溃,会话将会丢失 - 我对此有点担心,但我更担心两个网络服务器之间的网络流量(尤其是当我们扩大规模),因为每当有人负载平衡到从网络服务器时,他们的会话将从主网络服务器通过网络获取。我想知道是否可以定义两个,save_paths以便机器在使用网络之前查看自己的会话存储。例如:
掌握:
session.save_path="tcp://localhost:11211, tcp://192.168.0.2:11211"
Run Code Online (Sandbox Code Playgroud)
奴隶:
session.save_path="tcp://localhost:11211, tcp://192.168.0.1:11211"
Run Code Online (Sandbox Code Playgroud)
这会成功地跨服务器共享会话并帮助提高性能吗?即节省 50% 的时间网络流量。还是这种技术仅适用于故障转移(例如,当一个内存缓存守护进程无法访问时)?
注意:我并不是特别询问内存缓存复制 - 更多关于 PHP 内存缓存客户端是否可以在池中的每个内存缓存守护进程内达到峰值,如果找到一个会话,则返回一个会话,如果没有找到,则只创建一个新会话在所有商店。在我写这篇文章的时候,我想我对 PHP 的要求有点高,哈哈...
假设:没有粘性会话、循环负载平衡、LAMP 服务器。
使用 Ubuntu 服务器 10.4,我 apt-getted php-apc
我要复制的 apc.php 文件在哪里?
谢谢!
http://pecl.php.net/ 中有 PECL 扩展的下载部分, 但我没有得到 PECL *本身** 的安装步骤。以下命令不起作用 -
yum intall pecl
Run Code Online (Sandbox Code Playgroud)
在我的系统中,我安装了 PECL,所以我可以安装这样的 PECL 扩展 -
pecl install mailparse
Run Code Online (Sandbox Code Playgroud)
但是,在运行pecl命令无法识别的系统中,如何在 Fedora 7 系统(旧系统)上先安装 PECL。
我有 Apache2 与 PHP + PHP-FPM 配置根据:
http://wiki.apache.org/httpd/PHP-FPM
我正在编写一个脚本,需要很长时间才能在内部 Vhost 上执行,但一直超时,如果脚本在 30 秒内执行,一切都会完美运行。
我的 apache 日志告诉我:
[Wed Apr 17 21:57:23.075175 2013] [proxy_fcgi:error] [pid 9263:tid 140530454267648] (70007)The timeout specified has expired: [client 58.169.202.172:49017] AH01075: Error dispatching request to :, referer:
Run Code Online (Sandbox Code Playgroud)
尝试运行脚本时,我在503 Service Unavailable执行时间刚好 30 秒后得到了一个。从逻辑上讲,这意味着我有一个超时指令或设置为 30 秒,但我在 Vhost 的配置中有这些:
Timeout 600
<IfModule proxy_module>
ProxyPassMatch ^/(.*\.php)$ fcgi://127.0.0.1:9001/home/pyrokinetiq/scripts/$1 timeout=600
ProxyTimeout 600
</IfModule>
Run Code Online (Sandbox Code Playgroud)
(php-fpm 对我来说在端口 9001 上运行)
我也试过把Timeout和ProxyTimeout放在httpd.conf没有区别的地方。
似乎有另一个特定于 的超时设置mod_proxy_fcgi,但我找不到它。我从官方 tarball 安装了 Apache2 httpd,似乎没有一个 …
我想将这些 PHP 设置添加到我的 Elastic Beanstalk 环境中:
upload_max_filesize = 64M
post_max_size = 64M
Run Code Online (Sandbox Code Playgroud)
这些选项无法设置option_settings在.ebextensions:
Namespace | Extend
---------------------------------------------|-------
aws:elasticbeanstalk:application:environment | Yes
aws:elasticbeanstalk:container:php:phpini | No
Run Code Online (Sandbox Code Playgroud)
如何php.ini在 Elastic Beanstalk 容器中添加自定义设置?
我是服务器管理的新手,我正在寻找强大的托管服务来托管我的新网站。这个网站基本上是一个手机网络游戏的后端,它将:
我真的不知道我需要什么样的服务器来处理这些需求,我的问题是:
我收到了一个关于“您不需要强大的 mysql 用户密码,因为为了使用它,他们已经可以访问您的服务器”的论点。我们谈论的是一个 4 位密码,它是一个实时商业网站上的标准英语词典单词。
在不以我自己的知识和经验影响答案的情况下,我想向他们展示一些来自无私的 3rd 方来源的回应。有人关心这个吗?编程/实用答案将不胜感激。
我刚刚重新安装了 XAMPP。当第一次打开 PHPMyAdmin 时,我注意到它非常慢。在 localhost 上打开每个页面需要将近 5 秒的时间是没有意义的。我做了一个小测试案例来转移对 PHPMyAdmin 的指责:
$con = new PDO("mysql:host=localhost;dbname=mysql", "root", "");
$statement = $con->query('SELECT host,user,password FROM user;');
$users = $statement->fetchAll(PDO::FETCH_ASSOC);
Run Code Online (Sandbox Code Playgroud)
上面的脚本运行只需要大约 3 秒(尽管我第一次运行它需要接近 8 秒才能加载。)
然后检查它是否是 PDO 的错,我尝试使用mysql_connect:
$con = mysql_connect("localhost", "root", "");
mysql_select_db("mysql", $con);
$result = mysql_query('SELECT host,user,password FROM user;');
Run Code Online (Sandbox Code Playgroud)
需要同样长的时间才能完成。
一开始我以为是 PHP 的错,但是 PHP 代码和静态文件的提供速度比我单击刷新要快。我通过运行这个小脚本来测试 PHP:
header("Content-Type: text/plain");
for($i = 0; $i < 5000; $i++)
{
echo sha1(rand()) . "\n";
}
Run Code Online (Sandbox Code Playgroud)
5000 次sha1计算后,页面的显示速度仍然比我刷新窗口的速度要快。
然后我认为这是MySQL的错。但同样,没有进行太多测试就可以确定 MySQL 的运行速度比我需要的要快。使用 MySQL CLI 客户端,用户选择查询甚至不需要可测量的时间 …
我有以下 HTML/PHP 页面:
<?php
if(empty($_SERVER['CONTENT_TYPE'])) {
$type = "application/x-www-form-urlencoded";
$_SERVER['CONTENT_TYPE'] = $type;
}
echo "<pre>";
var_dump($_POST);
var_dump(file_get_contents("php://input"));
echo "</pre>";
?>
<form method="post" action="test.php">
<input type="text" name="test[1]" />
<input type="text" name="test[2]" />
<input type="text" name="test[3]" />
<input type="submit" name="action" value="Go" />
</form>
Run Code Online (Sandbox Code Playgroud)
如您所见,表单将提交并且预期的输出是一个 POST 数组,其中一个数组包含填充的值和一个值为“Go”(按钮)的条目“action”。但是,无论我在字段中输入什么值;结果总是:
array(2) {
["test"]=>
string(0) ""
["action"]=>
string(2) "Go"
}
string(16) "test=&action=Go&"
Run Code Online (Sandbox Code Playgroud)
不知何故,名为 test 的数组被清空,“action”变量确实通过了。
我已经使用了 Firefox 的 Live HTTP Headers 扩展来检查 POST 字段是否被提交,他们确实提交了。来自 Live HTTP Headers 的相关信息(在文本框中填充了 a、b 和 c 作为值):
Content-Type: application/x-www-form-urlencoded
Content-Length: 51
test%5B1%5D=a&test%5B2%5D=b&test%5B3%5D=c&action=Go …Run Code Online (Sandbox Code Playgroud) php ×10
mysql ×3
apache-2.2 ×2
httpd.conf ×1
lamp ×1
linux ×1
memcached ×1
mod-proxy ×1
password ×1
pecl ×1
performance ×1
php-fpm ×1
security ×1
time ×1
timezone ×1
web-hosting ×1
web-server ×1
windows ×1
xampp ×1