Avatar
David Čápka
Tým ITnetwork
Avatar
David Čápka:

Poslední 2 dny to tu jede jako šnek, omlouváme se, ale náš webhosting to očividně nezvládá. Vzhledem k tomu, jak je to nárazové, tak typuji, že jim to někdo přetěžuje. Psal jsem na podporu, dnes se jim už nedovolám, snad to bude během zítřka vyřešené.

Odpovědět  +1 2.4.2013 18:09
Miluji svou práci a zdejší komunitu, baví mě se rozvíjet, děkuji každému členovi za to, že zde působí.
Avatar
Kit
Redaktor
Avatar
Odpovídá na David Čápka
Kit:

Však ho právě na chatu pomlouvám, že má hosting špatně nastaveného Apache.

Nahoru Odpovědět  +1 2.4.2013 18:11
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
David Čápka
Tým ITnetwork
Avatar
Odpovídá na Kit
David Čápka:

Ano, vypadá to, že jim to někdo šíleně přetěžuje. Nám se skokově zátěž nijak nezvýšila a PHP generuje stránku za 90ms, takže u nás problém není.

Nahoru Odpovědět 2.4.2013 18:19
Miluji svou práci a zdejší komunitu, baví mě se rozvíjet, děkuji každému členovi za to, že zde působí.
Avatar
Petr Nymsa
Redaktor
Avatar
Odpovídá na David Čápka
Petr Nymsa:

Můžu se zeptat na hosting ?

Nahoru Odpovědět 2.4.2013 18:41
Pokrok nezastavíš, neusni a jdi s ním vpřed
Avatar
David Čápka
Tým ITnetwork
Avatar
Odpovídá na Petr Nymsa
David Čápka:

Zatím nevím, jestli to není naše chyba, takže nechci zveřejňovat. Již komunikuji s podporou.

Nahoru Odpovědět 2.4.2013 19:00
Miluji svou práci a zdejší komunitu, baví mě se rozvíjet, děkuji každému členovi za to, že zde působí.
Avatar
David Čápka
Tým ITnetwork
Avatar
Odpovídá na Kit
David Čápka:

Vypadá to, že je problém na straně PHP, prý se nestíhají vykonávat skripty a proto se řadí do fronty. Začal jsem logovat časy a nepřijde mi, že by tam něco timeoutovalo nebo se vykonávalo dlouho. Myslíš, že to může být tím, že je devbook prostě už moc navštěvovaný?

Nahoru Odpovědět 2.4.2013 20:12
Miluji svou práci a zdejší komunitu, baví mě se rozvíjet, děkuji každému členovi za to, že zde působí.
Avatar
David Čápka
Tým ITnetwork
Avatar
David Čápka:

Zkusím zakomentovat AJAX, uvidíme.

Nahoru Odpovědět 2.4.2013 20:23
Miluji svou práci a zdejší komunitu, baví mě se rozvíjet, děkuji každému členovi za to, že zde působí.
Avatar
Drakeman
Redaktor
Avatar
Odpovídá na David Čápka
Drakeman:

Hold je devbook až moc oblíbený no :-)

Nahoru Odpovědět 2.4.2013 20:37
Když se chce, tak jde všechno,
Avatar
David Čápka
Tým ITnetwork
Avatar
Odpovídá na Drakeman
David Čápka:

Vypadá to tak. AJAX je vypnutý, pokud to teď pojede dobře, budu muset řešit co s tím dál, nevím, co se s takovými projekty dále dělá, ale určitě mi nabídnou nějaké řešení.

Nahoru Odpovědět 2.4.2013 20:38
Miluji svou práci a zdejší komunitu, baví mě se rozvíjet, děkuji každému členovi za to, že zde působí.
Avatar
Kit
Redaktor
Avatar
Odpovídá na David Čápka
Kit:

Podobné prodlevy jsem registroval, když se mi na serveru nahromadily požadavky a Apache začal swapovat. Přitom Apache swapovat nesmí. Pomohlo mi tenkrát snížení počtu vláken. Dalšího výrazného zlepšení se dá docílit vložením reverzní proxy před Apache.

AJAX v podstatě dokazuje moji domněnku. Každý ajaxový dotaz totiž vytváří další vlákno Apache.

Nahoru Odpovědět 3.4.2013 8:38
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
David Čápka
Tým ITnetwork
Avatar
Odpovídá na Kit
David Čápka:

Zeptám se jich na to, teď dělám na optimalizaci webu. Právě jsem nahrál verzi, která si ukládá do DB HTML verze článků, ušetří se tím obrovský výpočetní výkon, jelikož HTML je nutné generovat jen jednou a to při publikaci článku. Dále se chystám na cachování, viděl bych to zatím na filesystem a tak na jednu minutu na všechny stránky na webu, mělo by to taky udělat svoje. Promazal jsem tabulku s událostmi, je jich teď polovina. Právě AJAX na ně to brutálně zatěžoval, asi dám každému uživateli políčko počtu událostí a budu je zvyšovat při vytvoření události. Ten dotaz do plné tabulky to zabíjel. Co se týče webhostingu, ochotně spolupracovali, poslali spoustu logů, nemohu si stěžovat. Vidím to na to, že do budoucna přikoupím vyšší limit vláken, pro jistotu.

Nahoru Odpovědět 3.4.2013 20:11
Miluji svou práci a zdejší komunitu, baví mě se rozvíjet, děkuji každému členovi za to, že zde působí.
Avatar
Kit
Redaktor
Avatar
Odpovídá na David Čápka
Kit:

Také si do DB ukládám články v XML kvůli úspoře výkonu.

Na cachování se obvykle používá MemcacheDB, ale Apache cachovat umí. Když se dobře nastaví. Ještě víc však pomáhá reverzní proxy.

Pokud pomohlo promazání tabulky s událostmi, určitě by pomohla jejich částečná denormalizace přes triggery. Po přidání události do tabulky trigger inkrementuje políčko počtu událostí v tabulce s uživateli.

Nahoru Odpovědět 4.4.2013 9:25
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
David Čápka
Tým ITnetwork
Avatar
Odpovídá na Kit
David Čápka:

Ano, přesně tak to chci udělat, předpokládám, že COUNT je do tak velké tabulky pomalý.

Nahoru Odpovědět 4.4.2013 9:28
Miluji svou práci a zdejší komunitu, baví mě se rozvíjet, děkuji každému členovi za to, že zde působí.
Avatar
Kit
Redaktor
Avatar
Odpovídá na David Čápka
Kit:

Ano, COUNT(*) je drahá funkce.

Nahoru Odpovědět  +1 4.4.2013 9:30
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
Kit
Redaktor
Avatar
Odpovídá na David Čápka
Kit:

Myslím si, že až vyřešíš denormalizaci, budeš moct vrátit AJAX.

Nahoru Odpovědět 4.4.2013 13:23
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
David Čápka
Tým ITnetwork
Avatar
Odpovídá na Kit
David Čápka:

Určitě, zkusím to co nejdříve, zítra by to mělo být hotové.

Nahoru Odpovědět 4.4.2013 13:28
Miluji svou práci a zdejší komunitu, baví mě se rozvíjet, děkuji každému členovi za to, že zde působí.
Avatar
Kit
Redaktor
Avatar
Odpovídá na David Čápka
Kit:

Hlavně se to nesnaž řešit v PHP. Triggery v SQL jsou určeny přesně na tohle.

Nahoru Odpovědět 4.4.2013 13:30
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
David Čápka
Tým ITnetwork
Avatar
Odpovídá na Kit
David Čápka:

Zatím to mám v modelech, s triggery jsem ještě nedělal.

Nahoru Odpovědět 4.4.2013 13:45
Miluji svou práci a zdejší komunitu, baví mě se rozvíjet, děkuji každému členovi za to, že zde působí.
Avatar
Kit
Redaktor
Avatar
Odpovídá na David Čápka
Kit:

Tak to z těch modelů zase vyházej, jinak to bude zpomalovat. Triggerem je to na dva řádky a je to transakční.

Indexy jsou vlastně jen triggery. Indexy používáš. Tak proč bys neměl používat triggery?

Nahoru Odpovědět 4.4.2013 13:53
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
David Čápka
Tým ITnetwork
Avatar
Odpovídá na Kit
David Čápka:

Pak se na to podívám, musí to každopádně zrychlit, dotaz se spustí jen při vložení nové události, navíc je to přes hlavní index, mělo by to být velmi rychlé.

Nahoru Odpovědět 4.4.2013 13:57
Miluji svou práci a zdejší komunitu, baví mě se rozvíjet, děkuji každému členovi za to, že zde působí.
Avatar
Kit
Redaktor
Avatar
Odpovídá na David Čápka
Kit:

Netestoval jsem to, ale tohle bys měl spustit jednou v konzoli MySQL. Od té chvíle se o to bude MySQL starat automaticky samo. V PHP si tu hodnotu budeš pouze číst, případně ji můžeš vynulovat.

delimiter |
CREATE TRIGGER novaUdalost BEFORE INSERT ON Udalost BEGIN
    UPDATE User SET NovychUdalosti = NovychUdalosti + 1 WHERE User.Id = NEW.UserId;
END;
|
delimiter ;
Nahoru Odpovědět 4.4.2013 14:07
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
Kit
Redaktor
Avatar
Odpovídá na David Čápka
Kit:

Tak jsem to trochu otestoval:

CREATE TABLE User(Id integer primary key auto_increment,
    Udalosti integer default value 0, Name text);
CREATE TABLE Udalost(Id integer primary key auto_increment,
    UserId integer, Message text);
CREATE TRIGGER novaUdalost BEFORE INSERT ON Udalost
    FOR EACH ROW
    UPDATE User SET Udalosti = Udalosti + 1 WHERE Id = NEW.UserId;

INSERT INTO User(Name) values ('Franta');
INSERT INTO User(Name) values ('Pavel');
INSERT INTO User(Name) values ('Jindra');

SELECT * FROM User;
+----+----------+--------+
| Id | Udalosti | Name   |
+----+----------+--------+
|  1 |        0 | Franta |
|  2 |        0 | Pavel  |
|  3 |        0 | Jindra |
+----+----------+--------+
INSERT INTO Udalost (UserId, Message) VALUES (2, 'První zpráva pro Pavla');
INSERT INTO Udalost (UserId, Message) VALUES (2, 'Druhá zpráva pro Pavla');

SELECT * FROM User;
+----+----------+--------+
| Id | Udalosti | Name   |
+----+----------+--------+
|  1 |        0 | Franta |
|  2 |        2 | Pavel  |
|  3 |        0 | Jindra |
+----+----------+--------+
Nahoru Odpovědět 4.4.2013 15:43
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
David Čápka
Tým ITnetwork
Avatar
Odpovídá na Kit
David Čápka:

Díky moc. Zatím jsem nahodil tu verzi, kde to je v modelu, mělo by to velmi ulevit. Nevím, jestli dneska ještě stihnu udělat skript co spočítá všem události a zprávy, teď jsem je vlastně všem vynuloval. Velkou rezervu vidím také ve fóru, je hodně pomalé, něco tam bude špatně, to bude hned další věc, na kterou se vrhnu.

Nahoru Odpovědět 4.4.2013 17:03
Miluji svou práci a zdejší komunitu, baví mě se rozvíjet, děkuji každému členovi za to, že zde působí.
Avatar
Kit
Redaktor
Avatar
Odpovídá na David Čápka
Kit:

Zdá se, že ta modelová verze si dělá co chce. Upozorňuje mě na novou zprávu i když žádnou nemám.

Nahoru Odpovědět 4.4.2013 18:00
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
TomBen
Redaktor
Avatar
Odpovídá na Kit
TomBen:

To ukazuje dopředu, že nějakou mít budeš. :D

Nahoru Odpovědět  +4 4.4.2013 18:08
Za posledních 200 miliónů let se nic zvláštního nestalo, akorát dinosauři vymřeli a opice se naučily programovat.
Avatar
Kit
Redaktor
Avatar
Odpovídá na TomBen
Kit:

Je to tak, že mě to upozorňuje nejen na přijaté, ale i na odeslané zprávy.

Editováno 5.4.2013 9:50
Nahoru Odpovědět 5.4.2013 9:50
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
Petr Nymsa
Redaktor
Avatar
Petr Nymsa:

Vypadá to že si opravdu dělá co chce. Občas upozorní na starou událost, jindy upozorní se spožděním a jindy neupozorní vůbec. Snad se to opraví co nejrychleji a nejsnadněji :)

Nahoru Odpovědět 5.4.2013 9:56
Pokrok nezastavíš, neusni a jdi s ním vpřed
Avatar
David Čápka
Tým ITnetwork
Avatar
Odpovídá na Kit
David Čápka:

Třeba jí máš, jen ti to neukazuje to počítadlo. Kouknu na to, dnes bych měl tuto část dodělat.

Nahoru Odpovědět 5.4.2013 9:57
Miluji svou práci a zdejší komunitu, baví mě se rozvíjet, děkuji každému členovi za to, že zde působí.
Avatar
Kit
Redaktor
Avatar
Odpovídá na David Čápka
Kit:

Žádné máš nejí :)

Pokaždé, když něco napíšu, tak se objeví jednička a v seznamu nových zpráv nic není.

Nahoru Odpovědět 5.4.2013 10:00
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
Petr Nymsa
Redaktor
Avatar
Petr Nymsa:

A mě to zase vypadá, že po každém příspěvku mám událost... schválně píšu abych to zkusil

//EDIT tak je to pravda

Editováno 5.4.2013 10:06
Nahoru Odpovědět  +1 5.4.2013 10:06
Pokrok nezastavíš, neusni a jdi s ním vpřed
Avatar
David Čápka
Tým ITnetwork
Avatar
Odpovídá na Petr Nymsa
David Čápka:

Kouknu na to odpoledne :) Ono se při přidání příspěvku přidávají 2 události (nový příspěvek ve vláknu a případně nová odpověď), zapomněl jsem tam podmínku. :[

Nahoru Odpovědět 5.4.2013 10:42
Miluji svou práci a zdejší komunitu, baví mě se rozvíjet, děkuji každému členovi za to, že zde působí.
Avatar
Kit
Redaktor
Avatar
Odpovídá na David Čápka
Kit:

Až to uděláš tím triggerem, budeš to moct z modelu vyhodit i s tou podmínkou :)

Nahoru Odpovědět 5.4.2013 10:48
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
David Čápka
Tým ITnetwork
Avatar
Odpovídá na Kit
David Čápka:

Tak v triggeru bude ta podmínka stejně :) Teď se počítá každá událost u člena, ale některé jsou systémové.

Nahoru Odpovědět 5.4.2013 10:50
Miluji svou práci a zdejší komunitu, baví mě se rozvíjet, děkuji každému členovi za to, že zde působí.
Avatar
Kit
Redaktor
Avatar
Odpovídá na David Čápka
Kit:

Proč by měla být podmínka i v triggeru? Napíšeš jeden trigger pro události člena a jeden pro systém.

Když děláš databázovou aplikaci, tak nemůžeš uvažovat procedurálně, ale relačně.

Editováno 5.4.2013 10:56
Nahoru Odpovědět 5.4.2013 10:55
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
David Čápka
Tým ITnetwork
Avatar
Odpovídá na Kit
David Čápka:

No ale insert je jeden, záleží na hodnotě ve sloupci vkládaného řádku jestli se vyvolá i update na tabulku uživatelů nebo ne. Někde to přeci opodmínkovat musím.

Nahoru Odpovědět 5.4.2013 11:07
Miluji svou práci a zdejší komunitu, baví mě se rozvíjet, děkuji každému členovi za to, že zde působí.
Avatar
Kit
Redaktor
Avatar
Odpovídá na David Čápka
Kit:

Opodmínkovat to můžeš uvnitř toho update. Na to je přece určeno WHERE....

Nahoru Odpovědět 5.4.2013 12:30
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 36 zpráv z 36.