Prosba o IT pomoc!!!
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é?
- Pro psaní komentářů se přihlaste.
Komentáře
Já se poptám (znalec Drupalu
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?
Děkuju!
Takže cachování je vypnuté,
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 :)
Ono to bude tím, že Drupal je
No, pokiaľ to ide z
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.
Aha. Ono teda, jak píše
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ží.
No, takto… Neviem, či to
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é).
Děkuju! Akorát já mám trochu
No, tak to ťažko radiť.
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?
Moc děkuju za všechny nabídky
To je paráda!
To je paráda!
wow, bomba!