^file:lock[/counter.lock]{
$file[^file::load[text;/counter.txt]]
$string[^eval($file.text+1)]
^string.save[/counter.txt]
} Количество посещений: $string<br>
В отсутствие блокировки, два одновременных обращения к странице могли вызвать увеличение счетчика… на 1, а не на 2:
·
пришел первый;
·
пришел второй;
·
считал первый, значение счетчика 0;
·
считал второй, значение счетчика 0;
·
увеличил первый, значение счетчика 1;
·
увеличил второй, значение счетчика 1;
·
записал первый, значение счетчика 1;
·
записал второй поверх только что записанного первым, значение счетчика 1, а не 2.
Внимание: всегда думайте об одновременно приходящих запросах. При работе с базами данных обычно есть встроенные в SQL-сервер средства для их корректной обработки.