BrokenBrake

BrokenBrake
Рейтинг
194
Регистрация
03.03.2007
netwind:
Видимо, это вы о ситуации когда два процесса внезапно и одновременно решают обновить кеш.
Конечно, они поочередно отработают с flock, но ведь это же кеш. Там информация будет отличаться ненамного. По сравнению с общей сложностью flock, для вебсайтов я бы все равно выбрал бы rename.

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

netwind:
Отсутствие синхронизации всегда быстрее. Неужели не очевидно.

Но при этом при нагрузках всё выше вероятность проблем с потерей данных. Причем, эта вероятность не исчезает полностью - сбой может произойти и при маленькой нагрузке. Не слишком ли дорого обходятся эти микросекунды? Да и не очевидно, если честно.

ewg777, любая БД так работает, насколько мне известно, но причём здесь базы в этой теме? :)

Как страшно жить :)

Что может быть ужаснее смерти близкого человека?

Не знаю, зачем такая тема и кому интересно чужое горе.

RR1:
Тусуются приимущественно в местах, где пища остается..бывает даже по штук 30 в одном месте.

А убирать за собой не пробовали?

raspberry:
было ли у вас такое: написали пост с претензиями к какой-то компании (продукту, услуге, etc), в комментарии пришли представители этой компании и что-то ответили?

Написал маленько негатива про LendMoney, пришёл Захар Боул.

Написал про А1, пришли представители.

2 случая, только толка нет никакого — ничего не меняется.

Raspberry, а у вас просто любопытство, или готовите что-то?

netwind, не вспомнил, но подумал сейчас, и вижу одну проблему: c rename теоретически может случиться так, что более старые данные перезапишут более новые. Чтобы этого не происходило, надо блокировать файл, но тогда уже и raname вроде ни к чему :) Возможно, я не прав, тогда объясните почему.

BrokenBrake добавил 03.11.2009 в 19:35

Вообще, если честно, я удивлён, что нужны эти блокировки. Я раньше почему-то был уверен, что PHP должен сам понимать, что если мы пишем файл, не нужно допускать ситуаций с его чтением в тот же момент. То есть я всерьез считал, что эти все блокировки делаются автоматически. И вот, ошибся. Но почему так?

Кто нибудь может сказать, для чего может понадобиться специально чтение/запись без блокировок?

ewg777, спасибо! Зря я значит переделывал свой код с одной удобной строчки на несколько неудобных.

DeveloperRu:
насколько я изучил документацию, можно использовать LOCK_EX в int file_put_contents ( string $filename , mixed $data [, int $flags = 0 [, resource $context ]] )

Описано это так:

LOCK_EX Acquire an exclusive lock on the file while proceeding to the writing.

А где именно про это написано? Я читал здесь - http://docs.php.net/manual/ru/function.file-put-contents.php

Там есть параметр resource $context, но ничего не говорится, что в качестве этого параметра может быть блокировка файлов.

dvaes:
слушайте netwind'а )
у флока минусов по-больше, чем с временным файлом и переименовыванием)

Ну блин. Это же техническая тема. Неужели так трудно перечислить эти минусы, если вы знаете о них? Давайте обсудим.

stack, для моих целей вообще не подойдёт, так как продукт должен ставиться пользователем с минимальной подготовкой на максимальное количество всевозможных серверов. Думаю, Memcached не везде есть.

Всего: 5028