Много гаден проблем

13 отговора 387 прегледа
#1

Много гаден проблем

Разработвам един доста голям сайт и понеже сървъра вече издъхва се появи един много гаден проблем:

Образно казано е следното:
Имам main.php в който include-вам отначалото sub.php който обработва информация като прибавя стойности към една таблица, след това затваря редовете като сетва променлива status=done.

Но работата е там, че когато потребителят кликва устоичиво многократно на REFRESH - този скрипт се изпалнява многократно.

Наистина не знам как да се справя с този проблем, някой има ли идеи??

[линк]
Отговор
в отговор на draggh #2

Re: Много гаден проблем

при инклуд проверяваш дали има сетнато сейшън статус и ако е то дали е дон, ако не е инклудваш там и вършиш тарикатлъка, ислед което сетваш сейшън променлива - това е най-елементарното и най-бъързото което може да се направи.

Отговор
в отговор на Bълk #3

Re: Много гаден проблем

Човече това направих първо :)
Даже права usleep s random число от 200 000 до 3 000 000 микросекунди ... освен това инклудвам само на повече от 1 минута (помна с бисквитка)

пробвах и с LOCK на таблиците в mysql - при което ми блокира сървъра за минути просто.

Други идеи плсссссс

[линк]
Отговор
в отговор на draggh #4

Re: Много гаден проблем

и какъв ти е проблема в такъв случай?

Отговор
в отговор на Bълk #5

Re: Много гаден проблем

Ами пак има случаи в които се изпалняват заявките двойно .... сякаш кода ми се изпалнява 2 или повече пъти с 1-2 реда закъснение ... и това е лошо.

Просто ако един превод е бил 200 лв става 400 лв .... представи си за по големи цифри.

[линк]
Отговор
в отговор на draggh #6

Re: Много гаден проблем

много ли е натоварен сървър?

Отговор
в отговор на Bълk #7

Re: Много гаден проблем

Доста е да ....
~500 000 посещения на ден.

От тогава почна да ги прави тия проблеми.
Но съм сигурен, че трябва да има начин да се оправи това

[линк]
Отговор
в отговор на draggh #8

Re: Много гаден проблем

Твой ли е? Ако е твоя опитай понастройване на apache-to или какъвто ти е сървъра... ако е много натоварен наистина нещата може да не могат да се оправят без оптимизация на сървъра... или пък на скрипта... дай малко повече инфо по въпроса за да ти дам съвет... като начало ми кажи (ако знаеш) каква е машината/те...

Day after day, love turns grey
Like the skin of a dying man

Отговор
в отговор на draggh #9

Re: Много гаден проблем

изглежда, че ДБ се бави, то ест зисковети операции, пробвай да сетваш променливата преди заявка, но това няма да те спаси много. Май имаш нужда от ъпгрейд на хардуер.

Отговор
в отговор на draggh #10

Re: Много гаден проблем

php.net/include_once

Отговор
в отговор на lol #11

Re: Много гаден проблем

абе ти друго кажи, какво да се прави когато следваща заявка за изпълнение на скрипт от същия клиент идва преди да е приключила предишната.

Отговор
в отговор на draggh #12

Re: Много гаден проблем

едно малко глупаво предложение, създаваш нова таблица с едно поле SID, и преди всeеки инсърт търсиш за SID, и ако го няма го добавяш, и правиш инсърт-а, а ако го има, нищо не правиш ;)

Отговор
в отговор на Tъпчo #13

Re: Много гаден проблем

Абе при около 500 хил. посещения на ден (както беше писано по-горе), не мисля че е добра идея да се утежнят ептем нещата с още един INSERT (на SID-a) и контролен SELECT по някое време след това.

Мисля си, че сет-ването не едно SESSION флагче при INSERT е далеч по-добре. Както и ъпгрейд на хардуера и връзката. Друго спасение не виждам.

Отговор
в отговор на mr.vain #14

Re: Много гаден проблем

нали точно това се оплаква че не става.

Отговор