- Автор темы
- #1
Господа гуру PHP. Прошу вашего мнения или совета.
Есть скрипт, в нем функция calc(). Эта функция довольно "тяжелая". Вызывается она всегда при загрузке любой страницы сайта, а также при AJAX запросах, которые на некоторых страницах идут 1 раз в 2 секунды.
Возможна ситуация, когда эти AJAX-запросы придут почти одновременно из разных закладок/браузеров/компов. Поскольку ф-я calс() "тяжеловата", то случается, что 2-й поток начинает ее выполнять, когда 1-й еще не завершил. Т.О в нек. промежуток времени ее одновременно выполняют 2 скрипта. Необходимо придумать решение, чтобы скрипт, начав ее выполнять, мог установить какой-то глобальный признак, видимый всем обрабатываемым запросам.
Что-то типа этого:
Есть скрипт, в нем функция calc(). Эта функция довольно "тяжелая". Вызывается она всегда при загрузке любой страницы сайта, а также при AJAX запросах, которые на некоторых страницах идут 1 раз в 2 секунды.
Возможна ситуация, когда эти AJAX-запросы придут почти одновременно из разных закладок/браузеров/компов. Поскольку ф-я calс() "тяжеловата", то случается, что 2-й поток начинает ее выполнять, когда 1-й еще не завершил. Т.О в нек. промежуток времени ее одновременно выполняют 2 скрипта. Необходимо придумать решение, чтобы скрипт, начав ее выполнять, мог установить какой-то глобальный признак, видимый всем обрабатываемым запросам.
Что-то типа этого:
PHP:
......
calc();
.....
function calc()
{
if(CALC_EVENT) // CALC_EVENT - какой-то признак того что эта функция выполняется другим скриптом
return;
try{
set_calcEvent(); //установить CALC_EVENT
.........
код, гарантированно выполняемый в пределах всего сайта всего в одном экземпляре
.........
}catch(e){
close_calcEvent(); // сбросить CALC_EVENT
}
}