Autor Zpráva
Pavel Z.
Profil *
Zdravím,
stojím před rozhodnutím, jakým způsobem nahradím LOCK TABLES. Jsem na Superhostingu a oprávnění pro zamykání tabulek nemám. Když jsem zavolal na hotline, tak se mi dostalo odpovědi (v sobotu večer), že by to zatěžovalo sdílený server, :-) napsal jsem potom ještě email, ale odpověď předpokládám až v pracovní den.

Napadlo mě několik možností:
- Nejsem si jistý, jestli PHP přistupuje k MySQL pokaždé jako jiný klient? Kdyby ne, tak bych to vůbec nemusel používat.
- Ukládat si stav zamknutí do tabulky (něco jako tabulka se sloupcem "tbl"-PRIMARY, vložit tam INSERTem jméno blokované) a testovat mysql_errno() == 1062,
-- pokud primární klíč v tabulce již je, tak počkat 1ms a zkusit znovu,
-- když není, tak vložit a místo UNLOCK TABLES použít DELETE ... WHERE

Co si myslíte o tomto řešení? Předem děkuji za rady
Leo
Profil
Idealni asi je zmenit webhosting, ale dost mozna vam pomuze i MySQL 4.1, ktere podporuje uz i transakce. Leo
Pavel Z.
Profil *
Právě MySQL 4.1 by mi pomohlo, jenže tam tlí 4.0.

A co se týče jiného webhostingu, tak to je taky tak trochu problém, je potřeba 4+ databáze 10+ subdomén a cena maximálně 100kč/měs.
Jedinný hosting, který by padal v úvahu je placené pípni.cz, jenže tam běží jednomu "klientovi" web (hosting si zařídil sám) a je nadmíru nespokojen s výpadky. Musí se jim ale uznat, že mají vždy nejnovější technologie a výborné administrační rozhraní, kde si člověk zařídí vše sám.
Leo
Profil
Za malo penez malo muziky, tak to proste je. Leo
Rob
Profil
Pavel Z.
A v jaké souvislosti potřebujete tu tabulku zamknout??
kaifman
Profil
pozor na transakce, jsou pripady kdy vam zamykani transakci moc nepoumuze a je treba zamknout celou tabulu
Kajman_
Profil *
Ještě jednou bych zkusil poprosit hosting, jestli by zamykání pro tu Vaši konrétní databázi nepovolil. A když se mu nebude chtít, tak třeba pohrozit tím vlastním příznakem, který by snad mohl zatěžovat sdílený server víc ;-)
kaifman
Profil
urcite ne vic nez kdyby zacali pouzivatat zamykani vsichni

spis bych pohrozil odchodem na jinej hosting
Pavel Z.
Profil *
ad Rob: potřebuju si seřadit diskusní vlákno tímto skvělým způsobem http://php.vrana.cz/diskuse-s-reakcemi.php, taky bych jim mohl pohrozit, že budu používat rekurzivní způsob, který je daleko náročnější na pamět v PHP :-)

ad kaifman: Tuším, že na mysql 4.0 mi budou transakce k ničemu. (možná ž tam jsou, ale mám je zakázaný)

ad Kajman_: Domluvím se s ostatníma uživatelema a budeme hromadně zamykat tabulky náročým způsobem, ;-) ale určitě je budu ještě chvíli přemlouvat, protože tohle je příliš krkolomné.


Nevíte někdo, jestli PHP přistupuje k MySQL pokaždé jako jiný klient?
Kajman_
Profil *
Nevíte někdo, jestli PHP přistupuje k MySQL pokaždé jako jiný klient?

Nejsem si vůbec jist, ale tipoval bych, že při mysql_connect se tvoří nezávislé spojení a při mysql_pconnect se to po nějakou dobu může chovat jako jedna instance jednoho klienta.
kaifman
Profil
Pavel Z. ja myslel spis jak psal leo ze by ti mohly pomoct transakce...coz v nekterych pripadech neni uplne tak pravda a stejne je treba normalne lockovat
Rob
Profil
Pavel Z.
Aha, tak to vám asi nepomohu. Ale možná bych taková radikální řešení nedoporučoval, aby vás nezrušili. Skoro každý má nějaké podmínky, že se můžou bránit proti scriptů nadměrně zatěžujícím server - alespoň si to myslím.
Pavel Z.
Profil *
ad Kajman_: také jsem si to tak nějak představoval ... raději na jednoho klienta nespoléhat

ad kaifman: Aha, myslel jsem si, že Leo píše pouze navíc, že MySQL4.1 podporuje transakce. Ty se mi na toto řešení nehodí.


Dnes byl pracovní den a na můj mail přišlo tedy okamžité potvrzení a už mi LOCK TABLES i celý skript úspěšně fungují. Děkuji tedy za všechny odpovědi, snad se toto téma bude hodit ještě někomu jinému.
Toto téma je uzamčeno. Odpověď nelze zaslat.

0