PHP-скрипт выполняется несколько раз за запрос браузера - PullRequest
3 голосов
/ 12 апреля 2011

У меня есть виртуальный хост в apache.Я на Ubuntu 10.04 с использованием LAMP.

<VirtualHost *:80>
DocumentRoot /home/username/websites/site_folder
ServerName www.site_folder.com
ServerAlias site_folder.com
    <Directory /home/username/websites/site_folder/>
        Options Indexes FollowSymLinks MultiViews
        AllowOverride All
        Order allow,deny
        allow from all
    </Directory>
</VirtualHost>

Я добавил в / etc / hosts строку:

127.0.0.1 site_folder.com

Внутри папки vhost я добавил скрипт php с именем one.php, имеющий код:

<?php
$today = getdate();
$handle = fopen("logs/logs.txt", "a");
fwrite($handle, $today['mday'].'/'.$today['mon'].'/'.$today['year']." this is a log post"." \n");
fclose($handle);
?>

когда я запускаю скрипт из браузера, http://localhost/one.php или site_folder.com/one.php, logs.txt регистрирует одно и то же сообщение 3 раза:

12/4/2011 this is a log post 
12/4/2011 this is a log post 
12/4/2011 this is a log post 

Использование отладчика netbeans Я увидел, что скрипт фактически повторяется 3 раза (после достижения конца скрипта он продолжается с начала того же скрипта -> one.php) Нет .htaccessсуществует внутри папки.

Я заметил, что $ _SERVER ['REQUEST_URI'] немного меняется при каждом выполнении / повторении:

1)$_SERVER['REQUEST_URI'] => /one.php?XDEBUG_SESSION_START=netbeans-xdebug
2)$_SERVER['REQUEST_URI'] => /one.php
3)$_SERVER['REQUEST_URI'] => /one.php

Мне нужно зарегистрировать свое сообщение только один раз.

Я добавил незакомментированные директивы из apache2.conf:

ServerRoot "/etc/apache2"
LockFile /var/lock/apache2/accept.lock
PidFile ${APACHE_PID_FILE}
Timeout 300
KeepAlive On
MaxKeepAliveRequests 100
KeepAliveTimeout 15
<IfModule mpm_prefork_module>
    StartServers          5
    MinSpareServers       5
    MaxSpareServers      10
    MaxClients          150
    MaxRequestsPerChild   0
</IfModule>
<IfModule mpm_worker_module>
    StartServers          2
    MinSpareThreads      25
    MaxSpareThreads      75 
    ThreadLimit          64
    ThreadsPerChild      25
    MaxClients          150
    MaxRequestsPerChild   0
</IfModule>
<IfModule mpm_event_module>
    StartServers          2
    MaxClients          150
    MinSpareThreads      25
    MaxSpareThreads      75 
    ThreadLimit          64
    ThreadsPerChild      25
    MaxRequestsPerChild   0
</IfModule>
User ${APACHE_RUN_USER}
Group ${APACHE_RUN_GROUP}
AccessFileName .htaccess
<Files ~ "^\.ht">
    Order allow,deny
    Deny from all
    Satisfy all
</Files>
DefaultType text/plain
HostnameLookups Off
ErrorLog /var/log/apache2/error.log
LogLevel warn
Include /etc/apache2/mods-enabled/*.load
Include /etc/apache2/mods-enabled/*.conf
Include /etc/apache2/httpd.conf
Include /etc/apache2/ports.conf
LogFormat "%v:%p %h %l %u %t \"%r\" %>s %O \"%{Referer}i\" \"%{User-Agent}i\"" vhost_combined
LogFormat "%h %l %u %t \"%r\" %>s %O \"%{Referer}i\" \"%{User-Agent}i\"" combined
LogFormat "%h %l %u %t \"%r\" %>s %O" common
LogFormat "%{Referer}i -> %U" referer
LogFormat "%{User-agent}i" agent
CustomLog /var/log/apache2/other_vhosts_access.log vhost_combined
Include /etc/apache2/conf.d/
Include /etc/apache2/sites-enabled/

Ответы [ 2 ]

0 голосов
/ 03 мая 2011

Я переустановил сервер, и теперь все работает нормально.

0 голосов
/ 12 апреля 2011

Полагаю, вы попробовали это, но ... вы пытались сделать это с реального сервера, а не с локального сервера?Я имею в виду, проблема может быть в вашем сервере Apache ...

Я не знаю, просто прочитайте это как простую идею для тестирования.

...