Articles of PHP的

如何重新启动MySQL服务器影响当前正在运行的作业

在我的虚拟专用Linux服务器上,总是有一些php作业正在运行。 这些作业不断在不同的表格中写入数据。 我想知道,如果我需要重新启动我的MySQL服务器,我做了一些configuration更改会发生什么? 如果我重新启动我的MySQL服务器,所有正在运行的作业将被杀死? 或者他们会暂停一会儿,在服务器重新启动时抛出错误? 谢谢你的帮助

为什么随机概率结果的方差足够大?

为什么随机概率结果的方差足够大? testing代码: function probability($chances) { asort($chances); $sum = array_sum($chances); $random = mt_rand(1, $sum); foreach($chances as $key => $chance) { if($random < $chance) return $key; } return $key; } $chances['case1'] = 10; $chances['case2'] = 30; $chances['case3'] = 60; $result = array(); for($i = 0; $i < 100000; $i++) @$result[probability($chances)]++; asort($result); $sum = array_sum($result); echo "Case\tCount\tOrig\tResult\n"; foreach($result […]

为什么在新的服务器上PHP脚本的执行时间很长?

我有一台服务器有2个四核处理器(2.4 GHz,16 GB RAM)。 我有一些PHP脚本运行在非常沉重的负载下。 这些脚本中的大部分都做了很多事情 从数据库中提取数据(从一个小表中查找一行) 从其他服务器(主要是Facebook)获取数据 上传一张小照片 更新数据库表(这个表的使用非常繁重,行数增长非常快,几乎每秒2行) 问题是,这些脚本需要花费太多的时间来执行。 我以前有一个服务器configuration较低(一个四核心处理器,6GB RAM),但脚本需要4-5秒才能完成。 但现在执行时间是30-40秒,甚至更多。 我如何测量执行时间? 我测量脚本开始和脚本结束microtime()并减去它们。 我只是需要一个粗略的估计。 服务器configuration:这里是一些在Apacheconfiguration中设置的参数: server_limit = 350 max_chlid = 350 keep_alive = off 其他特性:1.服务器不负载时,执行时间非常短2.以前的服务器执行时间很短,即使在重负载 我不知道我应该包括哪些细节。 请问我,我会在这里发表。 我该怎么做才能改善呢? 更新: 我已经find了ImageMagick库的问题。 我GOOGLE了一下,尝试了一些像禁用OpenMP一样的function。 但是这并没有太大的帮助

caching一个完全dynamic的网站

我制作了一个拥有超过20,000页的dynamic网站,一旦创build了一个页面,就不需要在至less一个月甚至一年内更新它。 所以我在caching每个页面时,它是第一次创build,然后从一个静态的html页面提供 我正在运行一个PHP脚本(整个CMS在PHP上) if (file_exists($filename))首先从caching文件目录中的urlsearch文件名,如果它匹配,然后交付它,否则生成页面并caching它供后者使用。 虽然它是dynamic的,但仍然我的url不包含?&= ,我正在做这个-并将其分解成数组。 我想知道的是它会创build任何问题,从这个庞大的目录search文件? 我看到几个这样的Q / A,它说,不应该有我可以存储在ext2 or ext3 (我猜我的服务器有ext3)文件系统目录的文件数量的问题,但创build一个新文件的速度将有超过20-30,000的文件后迅速减less。 目前我在共享主机上,我必须caching文件。 我的主机在我的整个盒子里有100,000个文件的软限制,这个数目已经足够好了。 有人可以给我任何关于如何caching该网站的更好的主意。

PHP邮件()中继到邮件服务器

我注意到周围有一些其他post与我的问题类似,但发现它们并不是特定于我的场景,或者我只是不了解事情。 我的情况:我正尝试使用PHP mail()函数从LAMP服务器发送邮件。 我想将邮件转发到另一个专用邮件服务器。 问题:我似乎无法发送邮件…有时。 有时似乎有能力发送邮件到域外的帐户,但它没有发送任何邮件到域/networking内的帐户。 我已经看到日志经常抱怨它无法validation域控制器…但它不应该担心,应该吗? 我猜我感到困惑的部分是PHP的邮件()函数自动创build一个SMTP消息到服务器? 或者我必须设置php.ini设置来查看本地主机,然后configurationsendmail / postfix将邮件发送到邮件服务器。 此外,如果我只指定LAMP服务器尝试连接邮件服务器,为什么还要麻烦地使用域控制器进行身份validation? 希望有人能帮我把这个问题搞清楚。 现在一直在困扰我,一直没有find解决办法。 谢谢,

长时间运行的PHP脚本挂起

我有这个设置在我的PHP脚本,以使其运行,只要它需要parsing和执行MySQL查询和超过100,000行的图像。 ignore_user_abort(true); set_time_limit(0); #begin logging output error_reporting(E_ALL); ini_set('memory_limit', '512M'); 我在shell中像这样运行这个命令: nohup php myscript.php > output.txt 运行了大约8到10个小时之后,这个脚本仍然会运行,但执行只是停止…没有更多的输出..这不是一个僵尸进程我检查顶部。 它还没有达到内存限制,如果它不会退出? 到底是怎么回事? 保pipe这个脚本和编写自定义代码来推动它是一个真正的痛苦。 到底是怎么回事? 我读了unix也许清理僵尸,但它不是一个僵尸。 我知道这不是PHP的设置..它不是通过一个networking服务器运行它只是从命令行所以给。

Apache和parsing的PHPcaching

假设我们已经安装了Linux + Apache + PHP和所有默认设置。 我有一些PHP网站,使用一些大的第三方PHP库,让我们说1 MB的PHP来源。 这个库很less使用,比方说只对POST请求。 有一个原因,我不能将这个库的用法转移到单独的PHP文件。 所以,我必须为每个HTTP请求包含这个库,但是很less使用它。 在这种情况下,我应该关心PHPparsing的时间花费吗? 让我解释。 我可以这样做: <?php require_once('heavy_library.php'); // do regular stuff if(we need heavy library) { heavy_library_function(); } ?> 我认为这个解决scheme是不好的,因为在这种情况下,会为每个HTTP请求分析heavy_library.php。 我可以把它移到if语句中: <?php // do regular stuff if(we need heavy library) { require_once('heavy_library.php'); heavy_library_function(); } ?> 现在据我了解,只有在我们需要图书馆的情况下才会parsing它。 现在,回到问题。 Apache和PHP的默认设置。 我应该关心这个问题吗? 我应该将require_once移到真正被使用的地方吗,或者我可以像往常一样离开它,Apache / PHP会做一些caching来防止每个HTTP请求的parsing。

将PHP解释器添加到PATH

我在Windows机器上添加了包含php.exe的文件夹(Windows U7 x64)的全局variablesPATH的path。 但是当我input控制台时: php -v 我越来越: 'php'不被识别为内部或外部命令,可操作的程序或batch file。 如果我input: php.exe -v 有用: PHP 5.5.10(cli)(内置:2014年5月14日14:49:07)Copyright(c)1997-2014 PHP Group Zend Engine v2.5.0,Copyright(c)1998-2014 Zend Technologies

Windows系统login凭证

一个php应用程序需要与Windows系统一样的validation细节。 即Windowslogin凭证和应用程序凭证是相同的。 我需要开发一个PHP应用程序,应该在一个窗口成功login后自动使用PHPlogin

如何在pdo中执行SQL_CUR_USE_ODBC

希望是一个真正容易的 – 但花了相当多的时间。 基本上我正在走下PDO路线,因为我们现在都打算这么做。 在我的开发服务器上,我使用PDO和OBDC连接到我的caching数据库。 它的工作没有问题搬到生活,这是相当缓慢的。 我认为其中一些已经归结为架构32位/ 64位系统。 无论如何,在与司机玩,然后放弃后,我回到了PHP脚本,并敲出了连接的DSN。 在本地再次闪电真的很慢。 我添加了SQL_CUR_USE_ODBC ,这是我听过的好东西,现在看起来都可以。 我的问题是如何使用pdo对象来做到这一点? 我认为这是在setCursor下,但不知道要传递什么或什么。 我目前的连接string是 $conn = odbc_connect ( "DRIVER={InterSystems ODBC};SERVER=xxxxxxx;DATABASE=development; UID=xxxxxx;PWD=xxxxxxxx;" , "" ,SQL_CUR_USE_ODBC); pdo一个是 $pdo = new PDO("odbc:pmi"); 里面有所有的服务器和密码信息。 那么如何在pdo中使用SQL_CUR_USE_ODBC 。 只是要清楚:IIS7,PHP5.4,64位Windows 2008 R2服务器。 我的开发相同,但32位Windows 7。