Blokování 10 000+ IP adres na hostingu

Zopper

  • *****
  • 657
    • Zobrazit profil
By me fakt zajimalo, co to ma bejt za uber web, bezici na nejakym freehostingu, kterej potrebuje zjistovat, z jaky IP tam kdo leze ... lol.
Asi chce začít točit porno a nechce, aby na něj mohl koukat někdo, kdo ho zná... tak omezí přístup z čr a pro jistotu i TOR... :D


asdasd

Co v databázi [myšleno MySQL] ukládat…
Původní dotaz byl, zda použití .htaccess nebo kódu v PHP nebude moc pomalé. Použití MySQL databáze by bylo ještě řádově pomalejší.
Nie nutne - uvedomte si, ze PHP alebo .htaccess sa citaju a spustaju "odznova" pri kazdom requeste.
Ked si nechcete v PHP implementovat DB, seekovanie a chcete mat zoznam IP dobre spravovatelny, tak si treba pri kazdom spusteni nacitat blokovane IP. Moze sa nad nimi postavit nejaka hashtabulka alebo strom, ale stale sa to bude robit pri kazdom spusteni.

Databaza bezi stale a tak si to moze cele drzat v RAM a efektivne prehladavat. To nacitanie sa spravi raz pri prvych requestoch.

Nie nutne - uvedomte si, ze PHP alebo .htaccess sa citaju a spustaju "odznova" pri kazdom requeste.
Stejně tak se musí při každém požadavku navázat spojení do databáze. Což bude trvat dýl, než samotné vyhledávání IP adresy. Pokud už by si to tazatel chtěl řešit vlastnoručně, může mít data v souboru v binárním formátu vhodném pro prohledávání, a při častém přístupu k souboru bude ten soubor v RAM držet cache operačního systému.

Jak už jsem ale psal, s rostoucí zátěží aplikace narazí mnohem dřív na limity plynoucí z toho, že jde o sdílený webhosting, než na problém s vyhledáváním těch IP adres.

Někdo

Nie nutne - uvedomte si, ze PHP alebo .htaccess sa citaju a spustaju "odznova" pri kazdom requeste.
Stejně tak se musí při každém požadavku navázat spojení do databáze.

To není pravda. Všechny frameworky pro webové aplikace které jsou o trochu víc než jen tupé demo implementují pool databázových připojení, tady je například popis PHP+MySQL: http://php.net/manual/en/function.mysql-pconnect.php

To není pravda. Všechny frameworky pro webové aplikace které jsou o trochu víc než jen tupé demo implementují pool databázových připojení, tady je například popis PHP+MySQL: http://php.net/manual/en/function.mysql-pconnect.php
Pokud se interpret PHP startuje znova pro každý požadavek, není kde ten pool držet.


Někdo

Pokud už by si to tazatel chtěl řešit vlastnoručně, může mít data v souboru v binárním formátu vhodném pro prohledávání, a při častém přístupu k souboru bude ten soubor v RAM držet cache operačního systému.

Když už někoho takové nápady napadají tak by měl mít dost sebereflexe k tomu aby je veřejně nepublikoval! Diskovou cache OS nemá programátor pod kontrolou, proto by na ni neměl spoléhat! Navíc opakovaně alokovat a zahazovat paměť na načítání dat ze souboru (i když se podaří aby to bylo z diskové cache) není nic efektivního! Civilizované řešení je přeci načtení ze souboru (nebo z databáze nebo odkudkoliv to bude vhodné) do paměti při startu aplikace (nebo i v případě nutné změny), soubor ať je v jakémkoliv rozumném formátu, data budou při načítání ze souboru uložena do sdílené datové struktury vhodné pro vyhledávání a zpřístupněna pro zpracování jednotlivých požadavků (OOP hlásá že by mělo jít nikoliv o sdílenou datovou strukturu ale o objekt).

Někdo

To není pravda. Všechny frameworky pro webové aplikace které jsou o trochu víc než jen tupé demo implementují pool databázových připojení, tady je například popis PHP+MySQL: http://php.net/manual/en/function.mysql-pconnect.php
Pokud se interpret PHP startuje znova pro každý požadavek, není kde ten pool držet.

I to mám ve své odpovědi podchycené - jde o tu část ve které se vyskytuje slovní spojení "tupé demo".

Logik

  • *****
  • 1 022
    • Zobrazit profil
    • E-mail
Re:Blokování 10 000+ IP adres na hostingu
« Odpověď #37 kdy: 22. 10. 2014, 14:27:22 »
Startování PHP je daleko dražší operace, než konexe do mysql. Takže v okamžiku, kdy se startuje PHP, tak je to jedno - nejdražší bude start PHP procesu a nějaká další vopičárna je jedno. V okamžiku, kdy se používá nějaké fastcgi, tak jsou čásy následující:

 1.6593210697174 -  10000 dotazů do pole načteného ze souboru
1.551509141922    - 10000 dotazů do databáze
 1.1013481616974 - 10000 dotazů do databáze používající pconnect

Soubor je tedy jednoznačně pomalejší než databáze. Kód (v databázi i v souboru je 1000 ip):

Kód: [Vybrat]
<?
$a=microtime(true);
for($x=0; $x< 10000;$x++) {
  $out=file('out.txt');
  $out=array_flip($out);
  $res=key_exists('1.2.3.4', $out);
}
echo microtime(true) - $a;

$a=microtime(true);
for($x=0; $x< 10000;$x++) {
  $q=mysqli_connect('','','','test');
  $res=$q->query("SELECT count(*) FROM ips where ip = '1.2.3.4'");
  $res=$res->fetch_row()[0];
}
echo microtime(true) - $a;

echo "\n<br>\n";

$a=microtime(true);
for($x=0; $x< 10000;$x++) {
  $q=mysqli_connect('p:localhost','','','test');
  $res=$q->query("SELECT count(*) FROM ips where ip = '1.2.3.4'");
  $res=$res->fetch_row()[0];
}
echo microtime(true) - $a;

echo "\n<br>\n";


                                 

I to mám ve své odpovědi podchycené - jde o tu část ve které se vyskytuje slovní spojení "tupé demo".
A proč to píšete do téhle diskuse, kde se bavíme o sdíleném webhostingu? Pokud by to tazatel řešil na vlastním serveru, který má plně pod kontrolou a může tam provozovat PHP jako modul, tak se na tohle vůbec neptá.

Logik

  • *****
  • 1 022
    • Zobrazit profil
    • E-mail
Re:Blokování 10 000+ IP adres na hostingu
« Odpověď #39 kdy: 22. 10. 2014, 16:12:06 »
A tím chceš říct, že sdílené php hostingy spouštějí pro každej request novej php proces?

Trupik

Re:Blokování 10 000+ IP adres na hostingu
« Odpověď #40 kdy: 22. 10. 2014, 17:49:05 »
Mne sa na takýto jednoduchý lookup veľmi osvedčil DB4 skrze DBA extension: http://php.net/manual/en/book.dba.php
Ukladá do súboru dvojice key => val ako v PHP poli, ale nezavadzia to v pamäti. Pripojenie na čítanie je bleskové, lebo nepotrebuje riešiť zamykanie.

JardaA

Re:Blokování 10 000+ IP adres na hostingu
« Odpověď #41 kdy: 22. 10. 2014, 21:44:57 »
Zatim jich tam mam jen par desitek, takze vykonove nemam problem.
Ale uvedomil jsem si, ze budu potrebovat blokovat i TOR exit nody (cca 1000 IP), a verejne proxy servery cca 8000 IP.

Nejsem specialista na Tor, ale neni tech vystupnich uzlu o hodne vice? Na nize uvedenem odkazu se uvadi aktualni pocet cca 6400.

https://www.dan.me.uk/tornodes

PS: Neslo by zrusit kontrolni otazku "Ve kterém měsíci proběhla sametová revoluce?"

Někdo

Re:Blokování 10 000+ IP adres na hostingu
« Odpověď #42 kdy: 22. 10. 2014, 22:24:21 »
A tím chceš říct, že sdílené php hostingy spouštějí pro každej request novej php proces?

Podle mě je Filip Jirsák úplně mimo a s php hostingem nemá vůbec žádnou praktickou zkušenost. Stojím si za tím že spouštět nový php proces pro každý request je dobré pouze pro tupé demo, v praxi nepoužitelné.

Re:Blokování 10 000+ IP adres na hostingu
« Odpověď #43 kdy: 23. 10. 2014, 06:58:04 »
Stojím si za tím že spouštět nový php proces pro každý request je dobré pouze pro tupé demo, v praxi nepoužitelné.
Co kdybyste místo toho, jak to asi nefunguje, raději popsal, jak to tedy podle vás funguje? Já si rád přečtu o sdíleném webhostingu, kde má každý uživatel připravený pool otevřených databázových spojení k MySQL databázi na lokálním serveru.

Logik

  • *****
  • 1 022
    • Zobrazit profil
    • E-mail
Re:Blokování 10 000+ IP adres na hostingu
« Odpověď #44 kdy: 23. 10. 2014, 12:14:26 »
Filip:
- Přinejmenším některé hostingy pravděpodobně mod_php používají. Např. tento ho prokazatelně používal:
http://www.cesky-hosting.cz/pro-zakazniky/odstavky-a-vypadky/2005.html
a ze současné konfigurace je vidět, že u toho pravděpodobně zůstal (u jakékoli jiné konfigurace není důvod mít na jednom serveru pouze jednu verzi PHP)
www.cesky-hosting.cz/pro-zakazniky/napoveda/php-4-5-mysql-4-5.html#zmena-pouzivane-rady-php-mysql

- I kdyby nepoužívali mod_php, tak jaksi i v jakémkoli *CGI módu (mimo samotný CGI) normálně persistentní konexe fungují

- Co kdybys místo mlžení se snažil říci nějaká fakta (např. většina sdílených hostingů používá technologii XY, ve které nefungují persistentní konexe protože YZ). Že to bude jako v tom vláknu o autorských právech - v okamžiku, kdy jsem od Tebe chtěl jasné vyjádření, z kterého by bylo jasně vidět, jaké tvrdíš blbiny, taks po pár pokusech se odpovědi vyhnout jsi z diskuse zmizel.