Lynx Posted April 5, 2005 Report Share Posted April 5, 2005 Tātad projekta attistībā esmu nonācis tik tālu, ka attiecīgi jebkura lietotāja kustība/darbība būtu jaiegrāmato. Un te rodas daži jautājumi par to kā labāk. Attiecīgi iespējas ir ievadīt visu mysql datubāzē, nav tik liela pārskatāmība, jo gandrīz katrai darbībai jataisa savs datu ierakstu izkārtojums, bet iespējams vinē drošība un ātrums. Otra iespēja likt iekš txt failiem un visu informāciju tik rakstīt iekšā failiņā ar lietotāja vārdu. Tagad jautājums kas ir ātrāk izmantot mysql(noslodze gan ir liela, jo visi dati ir mysql ierakstīti) vai arī txt faili būs ātrāki. Apstrādāt pēc tam viņus nevajadzēs. Nākamais par Mysql drošību nebūtu jautāumu, bet kā ar txt. Serveris ir Windows NT ar Microsoft-IIS/4.0 Tāpēc cik noprotu .htaccess faili nedarbojas un man arī nesanāk nobloķēt pieeju txt failu apskatei. Ir kāds veids kā appiet šo problēmu? Vel kādas idejas labākajam risinājumam? Link to comment Share on other sites More sharing options...
Kavacky Posted April 5, 2005 Report Share Posted April 5, 2005 Vispār kāds ir mērķis šiem log failiem? Pieķert šmaukļus? Link to comment Share on other sites More sharing options...
Lynx Posted April 5, 2005 Author Report Share Posted April 5, 2005 ... + izsekot projekta gaitai, iespējamajiem bugiem un viņu cēloņiem, ja pēkšņi log failā parādas ļoti interesanti un nenormas robežās dati. Link to comment Share on other sites More sharing options...
Roze Posted April 5, 2005 Report Share Posted April 5, 2005 gandrīz katrai darbībai jataisa savs datu ierakstu izkārtojumskapēc gan? Ja šāds logs nekalpo par kaut kādu datu restorēšanai (undo) un iepriekšēju darbību atcelšanu tad tak struktūru var pielāgot pilnīgi visam vienādu. Proti kaut kāds darbības identifikators / jūzeris kad veikta un pārējos datus jau var sabakāt vienā unikālā laukā (kaut vai seralizējot). Tagad jautājums kas ir ātrāk izmantot mysql(noslodze gan ir liela, jo visi dati ir mysql ierakstīti) vai arī txt faili būs ātrāki. Ja jūzeri nav drausmīgi daudz (sistēmai nav jāņemas ar 1000 logfailiem) tad ātrāk manuprāt ir darboties failsistēmas līmenī, vēl jo vairāk ja pēcāk nav nepieciešami kaut kādi detalizēti izvilkumi. Nākamais par Mysql drošību nebūtu jautāumu, bet kā ar txt. Serveris ir Windows NT ar Microsoft-IIS/4.0 Tāpēc cik noprotu .htaccess faili nedarbojas un man arī nesanāk nobloķēt pieeju txt failu apskatei. Ir kāds veids kā appiet šo problēmu?Ja tas ir NT serveris (ne workstacija) tad NTFSam ir vairāklīmeņu failpermisijas, kam read, kam write utt. Ja uztraukums ir par logfailu lasīšanu no weba, var tak logfailus turēt ārpus webroota! Un administratīvu pieeju organizēt kaut kā savādāk. Lai arī IIS ir pietiekami normālas tiesību menedžēšanas iespējas. Galugalā ja patīk .htaccess kapēc nelietot Apache par webserveri? Ja php nepieciešama .asp procesēšana IIS var strādāt kā backends un apache kā transparents proxy redirektēt .asp requestus tam. Link to comment Share on other sites More sharing options...
Lynx Posted April 5, 2005 Author Report Share Posted April 5, 2005 Nu lielākā problēma ir tāda ka nav tieša pieeja webservera konfigurācijai, tāpēc meiģinu meklēt kautkādus apkārt ceļus. Pēc idejas varētu rakstīt iekš php failiem un rīkoties šādi: <?PHP visi loga ieraksti ?> Bet nakamais jautājums vai var vispār šādu failu nolasīt? fopen nedarbojās, ar include dati netiek izvadīti. + vēl kā vispār var ierakstīt iekš faila saglabājot šo struktūru? <?PHP teksts ?> Varbūt citi varianti failu saglabāšanā. Link to comment Share on other sites More sharing options...
bubu Posted April 5, 2005 Report Share Posted April 5, 2005 $f = fopen('fails.php', 'w'); fwrite($f, "<?php\n"); fwrite($f, " kautkāds tekst\n"); fwrite($f, "?>\n"); fclose($f); Link to comment Share on other sites More sharing options...
blackhalt Posted April 5, 2005 Report Share Posted April 5, 2005 A ko vai tad ar standarta LOG failiem nepietiek? ment_log Link to comment Share on other sites More sharing options...
Lynx Posted April 6, 2005 Author Report Share Posted April 6, 2005 bubu, tavs variants nederēs, jo visu laiku jau starp <?PHP un ?> bus japievieno jauns teksts un pēc kāda laika tam visam būs jaizskatas šādi: <?PHP ieraksts 1 ieraksts 2 ieraksts 3 ?> Nevis: <?PHP ieraksts 1 ?> <?PHP ieraksts 2 ?> + vel neatradu veidu kā šādi ievadītus datus izvadīt uz admin paneli, vai nu met resourceid#1 erroru. Vai nekas nenotiek. Izvērtējot + un - nolēmu nečakarēties ar flat failiem un jau uzrakstiju funkciju, kas visu vajadzigo ieraksta mysql datubāzē. Link to comment Share on other sites More sharing options...
Venom Posted April 6, 2005 Report Share Posted April 6, 2005 failā jāraksta pirmajā rindiņā <?php exit; ?> un tālāk dati lasīt - vai nu ar to pašu $lines=file() ar unset($lines[0]), vai arī ar visu $fh=fopen($file,'r'); fgets($fh,4096); //izlaižam pirmo rindu while($line=fgets($fh,4096)) { apstrādājam log rindiņu } Link to comment Share on other sites More sharing options...
Venom Posted April 6, 2005 Report Share Posted April 6, 2005 Vispār kāds ir mērķis šiem log failiem? Pieķert šmaukļus? 16013[/snapback] zināt, kuram moderatoram sist pa galvu un vilkt nost no algas :ph34r: Link to comment Share on other sites More sharing options...
Lynx Posted April 6, 2005 Author Report Share Posted April 6, 2005 Vairāk gan patiešām piekērt šmaukļus(kā Kavacky devēja viņus) Un arī iespējams izķert kļudas un nepieļaujamas lietas kodā, lai novērstu negodīgu spēli. http://dev.gamez.lv/viewtopic.php?t=376 Link to comment Share on other sites More sharing options...
Lynx Posted April 6, 2005 Author Report Share Posted April 6, 2005 Venom, tavs variants strādā tikai daļēji. Pirmā rindiņa tiek patiešām nogriezta, ja tā nav šī te <?PHP exit; ?> Ar exit; skripts neizpildās vispār. Izmeiģināju gan ar $lines variantu, gan variantus iekš php.net manuāļa. Ja tas kautko varbūt maina, tad šādi izskatās ievades kods: function playerlog($message) { global $username; $log=fopen('./log_files/'.$username.'.php','a'); fwrite($log, "".date('Y-m-d H:i:s')." ".$message." \n "); fclose($log); } Un šādi es meiģinu izvadīt: $fh=fopen('./log_files/'.$_GET['username'].'.php','r'); fgets($fh,4096); //izlaižam pirmo rindu while($line=fgets($fh,4096)) { echo"$line<br>"; } Dati izskatās failā tieši šādi: <?PHP exit(); ?> 2005-04-06 16:17:08 Action: Move From: 414 To: 415 2005-04-06 16:17:10 Action: Move From: 415 To: 515 Link to comment Share on other sites More sharing options...
Venom Posted April 6, 2005 Report Share Posted April 6, 2005 maza piebilde, un tad jau viss strādā function playerlog($message) { global $username; $file='./log_files/'.$username.'.php'; if (!file_exists($file)) { $fh=fopen($file,'w'); fwrite($fh,'<?php exit; ?>'."\n") fclose($fh); } $log=fopen($file,'a'); fwrite($log, date('y-m-d H:i:s').' '.$message."\n"); fclose($log); } //lasīšana $fh=fopen('./log_files/'.$_GET['username'].'.php','r'); fgets($fh,4096); //izlaižam pirmo rindu while($line=fgets($fh,4096)) echo '<br />'.$line; fclose($fh); Link to comment Share on other sites More sharing options...
Venom Posted April 6, 2005 Report Share Posted April 6, 2005 Ar exit; skripts neizpildās vispār tu nemēģini to logu inklūdot? tamdēļ jau tās mocības ar fgets, ka nevar vienkārši Link to comment Share on other sites More sharing options...
Lynx Posted April 6, 2005 Author Report Share Posted April 6, 2005 Logu nemeiģinu inkludot, viss lapas kods attiecigi tajā vietā sastav tikai no tās tavas dotās rindiņas. Arī jaunais lasīšanas variants nestrādā. Sāku domāt varētu būt problēmas ar php versiju. Jo kods tagad ir tīrs copy/paste. PHP Version 4.3.1 Ja <?php exit; ?> pirmaja rindaa ir, kods vispar neizpildās, ja izdēšam tad visi ieraksti tiek parādīti izņemot pirmā rinda. Pameiģināju arī preg_match izmantot lai nogalinatu lapu, nekā :( Uztaisīt kodu, ja nav padots noteikts mainigais tad die(); Un mainigo no interneta nevar padot, jo global variables off. Tāpat negrib iet. Sāku apsvērt variantu pāriet atpakaļ uz mysql log failiem, darbojas bez problēmām. Link to comment Share on other sites More sharing options...
Recommended Posts