【问题标题】:Monitoring script performance on a shared host监控共享主机上的脚本性能
【发布时间】:2012-11-02 10:35:54
【问题描述】:

我计划通过 cron 在共享托管服务提供商上定期运行 PHP 脚本。根据我的本地主机开发,该脚本不会占用太多 CPU。但是,我想监控脚本的运行/使用情况,以免对服务器施加过大的压力,从而可能导致帐户限制。

监视脚本的内存和 CPU 使用情况的最佳方法是什么(具有通过电子邮件发送性能报告的附加功能)?由于我在共享主机上,我将无法安装应用程序。

谢谢

【问题讨论】:

    标签: php resources monitoring shared-hosting


    【解决方案1】:

    您可以通过以下方式编写脚本。它们是 php 中用于检查内存使用情况的默认功能,但在少数运行 Windows 的服务器中,如果它们被禁用,它们也是一种解决方法。分析下面的代码并尝试理解。希望对您有所帮助。

    function getMemUsage()
    {
    
            if (function_exists('memory_get_usage'))
            {
                return memory_get_usage();
            }
            else if ( strpos( strtolower($_SERVER["OS"]), 'windows') !== false)
            {
                // Windows workaround
                $output = array();
    
                exec('tasklist /FI "PID eq ' . getmypid() . '" /FO LIST', $output);            
                return substr($output[5], strpos($output[5], ':') + 1);
            }
            else
            {
                return '<b style="color: red;">no value</b>';
            }
    }
    
    $message = getMemUsage();
    $subject = "Memory USage";
    
    mail("xxx@xxx.com",$message,$subject);
    

    【讨论】:

    • memory_get_usage 确实存在,但它返回当前分配给 PHP 的内存 (in2.php.net/manual/en/function.memory-get-usage.php)。在共享主机上,这并没有给出我的脚本单独消耗的内存的准确值
    • 首先使用phpinfo()。然后你可以看到主机的所有规格,其中大部分都适用。某些主机可能对单个用户帐户有一些资源限制,以确保一个用户不会使用整个服务器的资源。要弄清楚这一点,您必须联系房东。
    • 已经这样做了。我的主机不强制执行硬约束。无论如何,我最初关于监控脚本性能的问题仍然存在。不确定我是否理解对 phpinfo() 的引用
    • 从 phpinfo(),你可以得到内存限制。在此基础上,您可以比较您的使用情况。
    • 内存限制不能很好地用于共享服务器。即使不是您的应用程序错误,您也将始终获得巨大的差异。我写的脚本会告诉你内存使用情况。从 php 信息中,您知道限制。这会给你一个想法。
    猜你喜欢
    • 2011-11-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-04-20
    • 2015-07-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多