Prosba o IT pomoc!!!

Obrázek uživatele sos
Jedinečná příležitost stát se hrdinou příštího DMD! Asi jste si všimli, že poslední dobou padají stránky čím dál tím častěji. Důvodem je přeplnění databáze, konkrétně rychlé plnění tabulek určených pro cache. Kupodivu existuje jednoduché řešení - pravidelné mazání obsahu tabulek. Zatím to děláme ručně, ale bohužel na to sem tam zapomeneme, případně se tabulka stihne naplnit dříve. V tom momentě se stránky zablokují a k odblokování dojde až druhý den. Řešením by bylo nastavení CRONE na hostingovém serveru. Hosting pro tyto případy poskytuje zdánlivě jednoduchý nástroj, do kterého stačí zadat frekvenci provádění akce a URL. Tady bohužel nastal zádrhel, protože URL s potřebnou funkcí není přístupné pro nepřihlášené uživatele. Netušíte náhodou někdo, jak to vyřešit? Případně, není tu nějaký znalec Drupalu, který by věděl, jak zařídit, aby se ta cache v první řadě vůbec neplnila? Variantně - není tu někdo, kdo by mi poradil, jak funkci vytáhnout ven, aby se dala spustit bez přihlašování? Případně někdo, s kým bych mohla konzultovat, jestli to vlastně není docela nebezpečné?

Komentáře

Obrázek uživatele Champbacca

Já se poptám (znalec Drupalu nejsem ani zdaleka), ale v tuhle chvíli mě napadaj dvě věci, přičemž za tu první se předem trochu omlouvám, ale zkusit to prostě musím:
1.) Tohle (https://www.inmotionhosting.com/support/edu/drupal-7/disable-view-cache/) jste asi zkoušeli, co?
2.) Kde ta funkce je? Cron by měl umět spouštět i věci, co vyžadují přihlášení, otázkou teda asi spíš je, jak vypadá ten hostingový nástroj? Dají se tam k url připisovat i parametry, nebo to je jenom něco základního, klikacího?

Obrázek uživatele sos

Děkuju! Ad 1) Já se s tím plácám tak dlouho, že už ani nevím, co všechno jsem zkoušela a co ne. Ale zdá se, že tohle jo, protože ta cache je vypnutá. Ad 2) Je to ve webovém rozhraní hostingu. Dá se tam nastavit čas a frekvence. Předpokládám, že pokud jsou součástí URL, parametry by se tam měly dát vrazit taky.
Obrázek uživatele Champbacca

Takže cachování je vypnuté, ale ty tabulky se přesto plní? Hmmm, divné a divnější.
A u toho Cronu si asi nerozumíme. Ta funkce (tak nějak jsem automaticky předpokládal, že je to ten samý _asi_ sql skript, kterým provádíte to ruční mazání, ale to jsem nejspíš mimo?) je uložená někde externě, kam je potřeba přihlášení, nebo to přihlášení potřebuje, aby měla práva se provést na zdejší databázi? Nebo dokonce oboje?

Každopádně mi pak už nezbývá než držet palce, moji obvyklí poradci na černou magii mě s Drupalem poslali někam, kde se ani drabbly nepíšou :)

Obrázek uživatele sos

Ono to bude tím, že Drupal je založený na principu modulů a cachuje jich víc než jen Views:-( Já jsem to asi vážně blbě pochopila. Jsou dva více méně na sobě nezávislé postupy. Jednak funkce, která je součástí jednoho z modulů. Spouští se kliknutím na tenhle odkaz: http://sosaci.net/admin_menu/flush-cache?token=fIoIxhp5EgGH87jlf99mAJ6VFt3ANycXTySuIRDQ4XE&destination=node/39929 Předpokládám, že ti nebudem fungovat kvůli právům. Je to z modulu Admin menu. Druhý postup (a jediný možný, když hosting zakáže zápis do databáze) je vlézt přes PHPmyAdmin do databáze a ručně tabulky promazat. Každopádně moc děkuju i za snahu. Když tak prostě budeme hlídat a pravidelně promazávat. Zdá se, že času bude dost:-)
Obrázek uživatele Stevko

No, pokiaľ to ide z phpmyadmina, tak to asi pôjde pomocou nejakých SQL príkazov. Tak asi hodiť php skript na stránku, ktorý sa pripojí do databázy a spustí tie správne SQL príkazy. Heslo do databázy samozrejme bude musieť mať uložené, ale to už musí niekde mať uložené aj drupal, takže ideálne by ho asi bolo brať z toho istého miesta.

Obrázek uživatele Champbacca

Aha. Ono teda, jak píše Stevko, pod tím ultimátně nějaké to sql bude, ale asi někde hodně hluboko.
Anyway, jsem rád že se to nějak vyřešilo, budu držet palce, ať to vydrží.

Obrázek uživatele Stevko

No, takto… Neviem, či to pomôže, ale nemôžem vynechať príležitosť predviesť/strápniť sa (nehodiace škrtnite).
Tento narýchlo splácaný pythonový kód ma prihlási (posledný GET request už je v prihlásenom stave, vidno vo výstupe možnosti ako odhlásiť a pridať obsah):

import requests
import re
meno = "stevko"
heslo = "Waaw, heslo!"
s = requests.Session()
r = s.get("http://sosaci.net/")
formbuildid = re.search('name="form_build_id" value="([^"]*)"', r.text ,re.MULTILINE)[1]
r = s.post("http://sosaci.net/node?destination=node", {"name": meno, "pass" : heslo, "form_build_id" : formbuildid, "form_id" : "user_login_block", "op" : "P%C5%99ihl%C3%A1sit+se"})
r = s.get("http://sosaci.net/")
print(r.text)

Takže miesto posledného get by tam bol request, ktorý potrebujete (a print by nebol, že áno).
Ale ak iba môžete volať URL, tak by sa to asi malo spustiť pri prístupe na tú url. Takže možno prepísať do PHP (a nejak zhezčejšejšiť vyhľadávanie form_build_id), ktoré sa pri prístupe na tú URL bude púšťať (ak teda pri prístupe na URL neviete spustiť niečo iné).

Obrázek uživatele sos

Děkuju! Akorát já mám trochu strach nechat někde v kódu admin heslo. Už nám sem jednou hackeři vlezli. Respektive, potřebovala bych poradit i s tím, jak to udělat bezpečně.
Obrázek uživatele Stevko

No, tak to ťažko radiť.
Drupal poznám veľmi málo, takže neviem, čo to dokáže. Najlepšie by samozrejme bolo, aby to Drupal neplnil.
Pokiaľ to nejde, tak by bolo fajn, aby pri použití uloženého mena a hesla nešlo robiť nič iné, len to, čo sa má (mazať cache tabuľky). Takže by to nebolo admin heslo.
Ak to Drupal nevie, tak v tom prípade by jedna z možností bola mať to niečo, čo pri spustení premaže požadované tabuľky, u seba na počítači. A nechávať to spúšťať automaticky a pravidelne. To má samozrejme nevýhody, že to nepremaže, keď človek nie je onlajn, ale to je prípad aj teraz, že?

Obrázek uživatele sos

Moc děkuju za všechny nabídky pomoci. V tuhle chvíli je problém pravděpodobně vyřešen. I když stránky jsou jsou pečlivě pozorovány.
Obrázek uživatele Keneu

To je paráda!

Obrázek uživatele Danae

wow, bomba!
-A A +A