Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
PHP 5. На примерах. Авторы: Кузнецов М.В., Симдянов И.В., Голышев С.В. MySQL на примерах. Авторы: Кузнецов М.В., Симдянов И.В. Социальная инженерия и социальные хакеры. Авторы: Кузнецов М.В., Симдянов И.В. C++. Мастер-класс в задачах и примерах. Авторы: Кузнецов М.В., Симдянов И.В. PHP на примерах (2 издание). Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Разное

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Как искать решение проблем?
 
 автор: Владимир55   (03.07.2008 в 14:50)   письмо автору
 
 

Мой сайт буквально насыщен скриптами, которые фиксируют очень много статистических параметров. В среднем, на одну страницу с текстом для посетителей приходится 32 файла со скриптами, причем иные по нескольку сотен строк. И возникает странная ситуация: когда я в качестве посетителя хожу по всем страницам в произвольном порядке, то фиксируется всё, что мне надо. И скрипт продажи паролей работает превосходно, и все процессы точно протоколируются.

А когда на сайте посетители, то время от времени обнаруживается, что параметры зафиксированы не все. А иной раз даже пароли куда-то исчезают (или не формируются).

Причина понятна - недетерминированное обращение к скриптам вызывает конфликты при обращении к текстовым файлам, в которых я храню собираемую статистическую информацию. Или же что-то подобное в этом роде.

Но как промоделировать эти сбои? Как найти конфликтные ситуации?

=======
То, что такая организация снижает быстродействие сайта, понятно. Но пусть пока что это обстоятельство останется без внимания – это временно.

   
 
 автор: mechanic   (03.07.2008 в 15:41)   письмо автору
 
   для: Владимир55   (03.07.2008 в 14:50)
 

надо писать логи, и чем больше информации туда будет писаться - тем лучше
если скрипты используют для записи статистики общий файл, то обязательно нужно использовать блокировки (php flock()), особенно в таком случае, когда скрипты запускаются непоследовательно

   
 
 автор: Владимир55   (03.07.2008 в 16:49)   письмо автору
 
   для: mechanic   (03.07.2008 в 15:41)
 

К моему сожалению, я этого не делал. Ибо просто об этом не знал.

Посоветуйте, как это можно осуществить.

Типичная операция у меня выглядит так:

    $abc = file_get_contents($adres);

    // Здесь другие операции с переменной $abc, не связанные с открытие файлов

    $file = fopen ($adres, "w") ;
    fputs ($file, $abc) ;
    fclose ($file) ;


Как я понимаю, на то время, пока будут осуществляться какие-то операции с переменной $abc, нужна исключительная блокировка доступа к файлу с адресом $adres.

А после окончания записи эту блокировку необходимо снять, чтобы с файлом могли работать другие скрипты.

Как это будет выглядеть применительно к данному примеру?

   
 
 автор: mechanic   (03.07.2008 в 17:52)   письмо автору
 
   для: Владимир55   (03.07.2008 в 16:49)
 

вот пример отсюда http://ru2.php.net/manual/ru/function.flock.php
$fp = fopen("/tmp/lock.txt", "w+");

if (flock($fp, LOCK_EX)) { // выполнить эксплюзивное запирание
    fwrite($fp, "Что-нибудь пишем\n");
    flock($fp, LOCK_UN); // отпираем файл
} else {
    echo "Не могу запереть файл !";
}

fclose($fp);

сам я с ней никогда не работал, поэтому особо не проконсультирую

   
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования