Parašė Kižas· 2010 Kov. 31 18:03:57
#1
Šiandien radau toki straipsni kuris padidina jusu
php fusiono puslapio resursus tai yra komentaru skaiciu,forumo pranesimu,saukiklos pranesimu ir t.t. Tai reisksia kad padidina ju atminti kad ateityje nereiktu ju trinti.Ir vat pasidares taip kaip cia raso zemiau pateikiau straipsni man nebeleidzia rasyti nei komentaru nei saukilos zinuciu t.y rodos kad butu uzpildyta viskas jei 1 zinute saukikloje istrinu tada leidzia rasyti 1 karta, o toliau vel nebeleidzia.
Stai tas straipsnis;
Pagal galimybes
PHP-Fusion yra gana menka turinio valdymo sistema, tačiau ji turi tiek modifikacijų, įskiepių, dizainų, kad tas galimybes, apie kurias rašau šiame straipsnyje, padidinti tiesiog būtina.
Galbūt kai kas jau numanėte, kad bus kalbama apie vartotojų skaičių, žinučių skaičių forume, šaukyklos žinučių skaičių ir apie panašius dalykus. Taip, tai tikra tiesa. Mano tikslas yra parodyti, kaip padaryti, kad jūsų tinklalapyje galėtų užsiregistruoti ne iki 32767 narių ir parašyti ne vos 32767 žinutes forume, komentaruose, šaukykloje ar kur kitur, o bent jau iki begalybės praktiškai (o teoriškai iki 18446744073709551615). Pripažinkime, tie 32000 su kažkiek nėra tiek jau daug kaip galėtų atrodyti iš pirmo žvilgsnio. Kai jūsų portalas tampa lankomas, tuomet po kurio laiko prasideda įvairūs nulūžimai.
Kad tokių dalykų išvengtumėte, reikia krapštytis iš anksto. Tiesiog SMALLINT (5) tipą pakeiskime į BIGINT (20) UNSIGNED. Ši operacija užtikrins, kad artimiausius kelis šimtus metų (o gal ir daugiau - tikrai neskaičiavau) jūsų tinklalapis nebus užpildytas duomenimis.
Yra du būdai atlikti tokią operaciją. Pirmas būdas yra gana keblus - einate į
phpMyAdmin, susirandate visas lenteles ir žiūrite, kurių laukeliai turi SMALLINT (5) tipą. Na ir jį rankiniu būdu pakeičiate kiekviename laukelyje, kiekvienoje lentelėje į BIGINT (20). Mazochisto džiaugsmas...
Bet yra ir daug paprastesnis būdas sutvarkyti šią problemą. Tiesiog pasinaudojate mano kodu ir viskas! Štai jis:
<?php
$database_name = '';
$r = dbquery("SHOW TABLES FROM $database_name");
$query = '';
while ($d = mysql_fetch_row($r)) {
$table_name = $d[0];
$result = dbquery("SHOW FIELDS FROM $table_name");
$query .= "ALTER TABLE $table_name ";
while ($d1 = mysql_fetch_row($result)) {
if (eregi('smallint',$d1[1])) $query .= "MODIFY ".$d1[0]." BIGINT (20) UNSIGNED NOT NULL, ";
}
$query = substr($query,0,strlen($query)-2);
$query .= ";\r\n";
}
$lines = explode("\r\n",$query);
for ($i = 0; $i < count($lines); $i++) {
$line = trim($lines[$i]);
if (eregi('MODIFY',$line)) $result = dbquery($line);
}
?>
Atkreipkite dėmesį į šią eilutę: $database_name = '';. Joje būtina nurodyti savo duomenų bazės pavadinimą. Pavyzdžiui, jeigu jūsų duomenų bazės pavadinimas yra blabla123, tai eilutę $database_name = ''; keičiate į $database_name = 'blabla123';. Jeigu duomenų bazė vadinasi bulbul123, tada $database_name = ''; keičiate į $database_name = 'bulbul123';. Manau, esmę supratote.
Dabar įdėmiai paskaitykite apie kodo paleidimą. Jį galite paleisti dviem būdais: per pridėtinius puslapius ir sukurdami naują failą. Kaip paleisti per pridėtinius puslapius, maždaug aišku: einate į administravimo pultą, spaudžiate "Pridėtiniai puslapiai", nurodote puslapio pavadinimą, į didesnį teksto lauką nukopijuojate mano kodą ir spaudžiate "Peržiūra" mygtuką. Antrasis būdas yra kiek labiau komplikuotas. Norėdami paleisti kodą per failą, pirmiausia turite atlikti šį veiksmą: po <?php eilute prirašyti include "maincore.php";. Juk turi būti sukurtas
MySQL prisijungimas ir aprašytos
PHP-Fusion
MySQL duomenų bazės valdymo funkcijos. Tuomet naująjį kodą išsaugote
php formatu bet kokiu pavadinimu, pavyzdžiui: as_ne_mazochistas.php. Sukurtą failą talpinate per FTP naršyklę arba kitokią tinklalapio bylų tvarkymo priemonę. Svarbiausia, kad įkeliamas failas būtų ten pat, kur yra ir maincore.php. Kai įkelsite failą į tinklalapį, tuomet jį atsidarykite per naršyklę, pavyzdžiui:
http://manosaitas.blabla.nene.te...istas.php. Atsidarote failą ir VISKAS! Štai ir jūsų
PHP-Fusion tinklalapio galimybės
MySQL atžvilgiu smarkiai padidintos daugybę kartų (maždaug 563 trilijonus kartų).
Tikiuosi, viskas, ką parašiau, jums buvo aišku ir suprantama. Jeigu kils neaiškumų, klauskite komentaruose. Mėginsiu jums į užduotus klausimus atsakyti.
Tai vat dabar klausimas kaip man atgal sugrazinti SMALLINT (5) reiksme kad eitu vel rasyti komentarus ir t.t.??
Mano fusiono versija 6
Redagavo Kižas· 2010 Kov. 31 18:03:15
Parašė ozzWANTED· 2010 Kov. 31 19:03:02
#2
Visų pirma. Jeigu pasidarei iš SMALLINT(5) -> INT(11) [unsigned]. Tai koks skirtumas ar:
0000000000fffffffffe
ar
__________fffffffffe
Ir čia ne galimybių didinimas, o neprotavimas...
Pvz. user_groups negali būti SMALLINT(3), nes user_level jau yra 101-103.
O naudoti ilgesnius nei reikia formatus, tai nebent serveris per galingas ir nori jį labiau apkrauti(stupid), arba vietos FTP per daug, t.y. nori kad duom. bazė didesnė būtų, ir paieška ilgiau truktų.
Gal tada praplėskite TEXT į LONGBLOB(4G) ???
Parašė sporto· 2010 Lie. 12 16:07:20
#7
Kadangi nenoriu eksperimentuoti tad pirmiausiai dar noriu paklausti. Gal jau jums yra taip buvę ir žinot priežastį:
PHP fusion v6. Puslapio failai nebuvo redaguoti,
mysql taip pat, bet nei iš šio nei iš to pradėjo neberodyti naujai sukurtų forumo pranešimų. Sistema rodo, kad yra naujas komentaras, bet nuėjus į postą tuštuma. Projektui jau 3 metai, forumo postų virš 50 000, naujienų komentarų dar daugiau.
Jūsų nuomone problema dėl
mysql dydžio išsieikvojimo ar kita priežastis? Laukiu patarimų.