【问题标题】:PHP counter disappears/reappearsPHP 计数器消失/重新出现
【发布时间】:2009-12-13 12:36:02
【问题描述】:

我下载了一个脚本来在我网站的两个页面上运行一个非常基本的计数器。自 2009 年 4 月以来,它一直运行良好,但在过去的三周内,它会突然消失,然后偶尔会再次出现。这周是每一天。起初计数器只是消失了,现在除了横幅之外,带有计数器的页面不会加载。该页面最终会加载,有时最多五分钟。但没有柜台显示。那是很久以后的事了。然后它可以再次消失!

[http://www.thepenvro.com/][1] 是主页 然后如果您点击“新闻”,然后点击“社交活动新闻”,这是另一个有计数器的页面。 (我们正在尝试查看谁对重聚信息感兴趣)。页面不稳定。它们要么没问题,要么它们在那里但缺少两个页面左下角的计数器,或者页面将只显示没有页面内容或计数器的标题。没有特别的顺序。

我已进入我网站的服务器端并重置脚本(Streamline.net tekkie 告诉我这样做)。它似乎没有帮助,但时不时地想知道这是否只是巧合。

它会影响另一个脚本。我有一个很好用的电子邮件表单,但是当这个计数器消失时,它会在 Contacts 页面上关闭表单到电子邮件功能。我在表格底部放了一条注释,供访问者在收到错误消息时发送电子邮件。当您可以设法让 SUBMIT 甚至更改屏幕时,完整的错误消息是:

FastCGI 错误 FastCGI 处理程序无法处理请求。 错误详情: FastCGI 池队列已满 错误号:4 (0x80070004)。 错误描述:系统无法打开文件。 HTTP 错误 500 - 服务器错误。 互联网信息服务 (IIS)

Streamline 要求我复制错误...我不能!我只能给他们我在这里发布的内容和截图。所以我不知道是我的剧本还是他们。计数器的脚本如下。这也是我买的东西。我首先认为可能是 IE8 导致了问题,但同样的问题出现在 Firefox 中。

最后一点....这不是发送电子邮件的问题,因为我在站点的一个子域中也有这种问题,并且没有问题。但是我也没有在子域的任何地方运行计数器。对于主域和子域,我拥有所有相同的功能。

感谢您的帮助...我是一个新手,因此我们将不胜感激地收到任何解决方案。我们正在为五月的重聚做宣传,圣诞节后我有一个大型的电子邮件活动要出去,我不希望网站都被搞砸。如果有替代计数器,或者如果我拥有的版本的 php 太旧,我很乐意从信誉良好的来源购买更好的。

<?php
/*******************************************************************************
*  Title: PHP hit counter (PHPcount)
*  Version: 1.2 @ October 26, 2007
*  Author: Klemen Stirn
*  Website: http://www.phpjunkyard.com
********************************************************************************
*  COPYRIGHT NOTICE
*  Copyright 2004-2007 Klemen Stirn. All Rights Reserved.

*******************************************************************************/

// SETUP YOUR COUNTER
// Detailed information found in the readme.htm file

// Count UNIQUE visitors ONLY? 1 = YES, 0 = NO
$count_unique = 1;
// Number of hours a visitor is considered as "unique"
$unique_hours = 1;
// Minimum number of digits shown (zero-padding). Set to 0 to disable.
$min_digits = 0;

#############################
#     DO NOT EDIT BELOW     #
#############################

/* Turn error notices off */
error_reporting(E_ALL ^ E_NOTICE);

/* Get page and log file names */
$page = input($_GET['page']) or die('ERROR: Missing page ID');
$logfile = 'logs/' . $page . '.txt';

   /* Does the log exist? */
   if (file_exists($logfile)) {

    /* Get current count */
    $count = trim(file_get_contents($logfile)) or $count = 0;

    if ($count_unique==0 || $_COOKIE['counter_unique']!=$page) {
    /* Increase the count by 1 */
    $count = $count + 1;
    $fp = @fopen($logfile,'w+') or die('ERROR: Can\'t write to the log file 
   ('.$logfile.'), please make sure this file exists and is CHMOD to 666 (rw-rw-rw-)!');
    flock($fp, LOCK_EX);
    fputs($fp, $count);
    flock($fp, LOCK_UN);
    fclose($fp);

    /* Print the Cookie and P3P compact privacy policy */
    header('P3P: CP="NOI NID"');
    setcookie('counter_unique', $page, time()+60*60*$unique_hours);
}

/* Is zero-padding enabled? */
if ($min_digits > 0) {
    $count = sprintf('%0'.$min_digits.'s',$count);
}

/* Print out Javascript code and exit */
echo 'document.write(\''.$count.'\');';
exit();

} else {
die('ERROR: Invalid log file!');
}

/* This functin handles input parameters making sure nothing dangerous is passed in */
function input($in) {
$out = htmlentities(stripslashes($in));
$out = str_replace(array('/','\\'), '', $out);
return $out;
}
?>

【问题讨论】:

    标签: javascript counter hit


    【解决方案1】:

    这与 PHP 代码无关,而与网络服务器的配置有关。它可能每秒被命中太多次而无法处理所有请求。

    尝试从 IIS 中查看以下设置:

    • instanceMaxRequests
    • 最大实例数
    • 队列长度

    【讨论】:

    • 谢谢你们。我们没有那么受欢迎!我们每天大约有 5 次点击。我将此错误屏幕提供给 Streamline,如果最大请求数、实例队列长度存在问题……那不是服务器端 CGI 实用程序吗?我怎样才能找出限制是什么......如果有限制,他们不会说吗?对不起,厚。如果这是服务器端问题,我想知道要问什么或告诉他们什么。他们所说的只是重置脚本,老实说,我实际上并不知道这是做什么的。它通常不会做任何事情。问题最终会自行解决,只是为了返回。
    【解决方案2】:

    如果您直接访问柜台,您会看到以下错误消息:

    <h1>FastCGI Error</h1> 
    The FastCGI Handler was unable to process the request. 
    <hr> 
    <p>Error Details:</p> 
    <ul> 
    <li>The FastCGI pool queue is full</li>
    <li>Error Number: 4 (0x80070004).</li> 
    
    <li>Error Description: The system cannot open the file.
    </li> 
    
    </ul> 
    <h2>HTTP Error 500 - Server Error.<br>Internet Information Services (IIS)</h2>
    

    我想说这要么是 Tomh 所说的,它获得了太多的点击,所以当一个请求从文件中读取时,另一个请求尝试打开它但它失败了,或者它只是因为权限问题而无法打开它。

    【讨论】:

    • 还有第二种选择:同一台服务器上的另一个站点获得大量流量,正在消耗所有资源,并且没有给 OP 的站点留下任何资源。
    【解决方案3】:

    很多人在使用 streamline.net 时都遇到过同样的问题,包括我自己。我目前有一个与他们合作的网站,该网站在一周中的每一天都有大约 50% 的时间出现故障。

    我的建议,换一个新的提供商。

    Streamline.net 不会帮助您,只会用模糊/不准确的答案来欺骗您。我只是在等待我的下一张薪水支票,然后我将与其他人一起购买托管。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-05-20
      • 1970-01-01
      • 2018-06-14
      • 1970-01-01
      • 2021-03-21
      • 1970-01-01
      • 1970-01-01
      • 2017-09-03
      相关资源
      最近更新 更多