PHP计数器消失/重新出现

时间:2009-12-13 12:36:03

标签: javascript counter hit

我下载了一个脚本,在我网站的两个页面上运行一个非常基本的计数器。自2009年4月以来,它运行得很漂亮,但在过去的三周里它会突然消失,然后偶尔会重新出现。本周它是每一天。首先柜台刚刚消失,现在除了横幅之外,没有加载计数器的页面。页面最终将加载,有时最多可加载五分钟。但没有柜台显示。那是很久以后的事了。然后它可以再次消失!

[http://www.thepenvro.com/][1]是主页然后,如果您点击“新闻”,然后点击“社交活动新闻”,这是另一个有计数器的页面。 (我们试图看看谁对团聚信息感兴趣)。页面不稳定。它们可以是正常的,或者它们在那里但是错过了两页中每个页面左下方的计数器,或者页面只显示没有页面内容的页眉或计数器。一切都没有特别的顺序。

我已进入我网站的服务器端并重置脚本(被告知由Streamline.net tekkie执行此操作)。它似乎没有帮助,但是时不时地想知道这是不是巧合。

它影响另一个脚本。我有一个很好的电子邮件表单,但当此计数器消失时,它会将表单下载到联系人页面上的电子邮件功能。我在表单底部放了一个注释,供访问者在收到错误消息时发送电子邮件。当您可以设置将SUBMIT设置为甚至更改屏幕时的完整错误消息是:

FastCGI Error
The FastCGI Handler was unable to process the request. 
Error Details:
The FastCGI pool queue is full 
Error Number: 4 (0x80070004). 
Error Description: The system cannot open the file. 
HTTP Error 500 - Server Error.
Internet Information Services (IIS)

Streamline要求我复制错误......我做不到!我只能告诉他们我在这里发布的内容和截图。所以我不知道这是我的剧本还是他们。该计数器的脚本如下。这也是我购买的东西。我首先想到的可能是IE8造成了麻烦,但同样的问题在Firefox中显示。

最后一个注意事项......这不是电子邮件的形式,这是一个问题,因为我也在网站的一个子域中运行,并且没有麻烦。但我也没有在子域的任何地方运行计数器。我对主域和子域都有相同的功能。

感谢您的帮助......我是一个完整的新手,所以任何解决方案都会感激不尽。我们正在为5月份的团聚做宣传,我在圣诞节后有一个很大的电子邮件活动要离开,我不希望这个网站都被搞砸了。如果有一个替代计数器或者我的版本的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;
}
?>

3 个答案:

答案 0 :(得分:2)

这与PHP代码无关,而是与Web服务器的配置有关。为了能够处理所有请求,它每秒可能会被击中太多次。

尝试从IIS查看以下设置:

  • instanceMaxRequests
  • MAXINSTANCES
  • queueLength

答案 1 :(得分:1)

如果您直接访问计数器,则可以看到以下错误消息:

<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所说的,它获得了太多的点击,所以当一个请求从文件中读取时,另一个请求尝试打开它并且它失败,或者它因为权限问题而无法打开它。 / p>

答案 2 :(得分:0)

很多人在使用streamline.net时遇到了同样的问题,包括我自己。我目前有一个网站,当天的每一天,每天都有大约50%的网站出现错误。

我的建议,更改为新的提供商。

Streamline.net不会做任何事情来帮助你,并会用模糊/无私的答案来哄骗你。我只是在等我的下一个薪水,然后我会和其他人一起买主机。