Lees je hem tegelijkertijd van de harde schijf af? Dat gaat namelijk altijd langzaam. Eerst in het geheugen stoppen en daarna pas checken met regex.quote:Op woensdag 3 juli 2013 10:33 schreef Chandler het volgende:
God wat is het toch vervelend om regexjes op grote bestanden af te sturen![]()
Heb een 2MB bestand en wilde deze eerst in 1x door preg_match_all halen, nou daar had PHP niet echt zin in en koste ruim een UUR!! lol, nu heb ik een benchmark gedaan om het bestand in stukken te verdelen en dat komt de snelheid ten goede..
stukken van 25000 (etc) + 500 extra (straks mis ik nog wat)
25500 bytes per keer - 709 seconden
10500 bytes per keer - 239 seconden
5500 bytes per keer - 130 seconden
3000 bytes per keer - 54 seconden
1500 bytes per keer - 22 secondenraar, kan iemand mij uitleggen waarom dit zo langzaam gaat?
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 | <?php $t = time(); $parseCls = new parse(); $size = 1000; echo '<pre>'; if (strlen($document) > $size) { $loop = ceil(strlen($document) / $size); $start = 0; for ($x = 0; $x < $loop; $x++) { echo date("Y-m-d H:i:s") . ' - ' . ($x * $size) . ' - ' . ($size + 500) . ' of ' . strlen($document) . '<br />'; $start = substr($document, $x * $size, $size + 500); $parseCls->parse($start); } } else { print_r($parseCls->parse($document)); } echo '</pre>'; ?> |
Some people, when confronted with a problem, thinkquote:Op woensdag 3 juli 2013 10:33 schreef Chandler het volgende:
God wat is het toch vervelend om regexjes op grote bestanden af te sturen![]()
Heb een 2MB bestand en wilde deze eerst in 1x door preg_match_all halen, nou daar had PHP niet echt zin in en koste ruim een UUR!! lol, nu heb ik een benchmark gedaan om het bestand in stukken te verdelen en dat komt de snelheid ten goede..
stukken van 25000 (etc) + 500 extra (straks mis ik nog wat)
25500 bytes per keer - 709 seconden
10500 bytes per keer - 239 seconden
5500 bytes per keer - 130 seconden
3000 bytes per keer - 54 seconden
1500 bytes per keer - 22 secondenraar, kan iemand mij uitleggen waarom dit zo langzaam gaat?
Gewoon telkens een x-aantal blokken lezen, dan parsen, dan weer verder lezen, dan parsen, etc etc. http://php.net/manual/en/function.fread.php Welk even flocken, anders gaan er andere processen naar willen schrijven en gaat het (mogelijk) fout.quote:Op woensdag 3 juli 2013 10:37 schreef Juicyhil het volgende:
[..]
Lees je hem tegelijkertijd van de harde schijf af? Dat gaat namelijk altijd langzaam. Eerst in het geheugen stoppen en daarna pas checken met regex.
Ja en nee. Dat hangt compleet van de gebruikte regex af. Een inefficiente regex kan (onnodig) lang duren, zeker als het om veel karakters gaat (oa ivm backtracking). Wat voor regex pattern gebruik je?quote:Op woensdag 3 juli 2013 10:33 schreef Chandler het volgende:
raar, kan iemand mij uitleggen waarom dit zo langzaam gaat?
Alles achter de @ kan je hiertegen aangooien:quote:Op woensdag 3 juli 2013 12:00 schreef Chandler het volgende:
"/[a-z0-9]+([_\\.-][a-z0-9]+)*@([a-z0-9]+([\.-][a-z0-9]+)*)+\\.[a-z]{2,}/i"
Om emails te parsen!ik krijg links met documenten aangeleverd die ik moet omzetten naar een database tabel...
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 | { # The following is stolen from: # http://cpansearch.perl.org/src/CREIN/Regexp-Common-dns-0.00_01/lib/Regexp/Common/dns.pm # So we don't need to install the dependency which is not in the Debian repository # sub _domain { my %flags = @_; my $sep = '\.'; my $letter = '[a-zA-Z]'; my $let_dig = '[a-zA-Z0-9]'; my $let_dig_hyp = '[-a-zA-Z0-9]'; my %labels = ( 1035 => "(?:$letter(?:$let_dig|$let_dig_hyp\{1,61}$let_dig)?)", 1123 => "(?:(?:$let_dig|$let_dig$let_dig_hyp*$let_dig)$sep)*(?:$let_dig|$let_dig$let_dig_hyp*$let_dig)", 2181 => '[^.]{1,63}', hybrid => '[a-zA-Z0-9_-]{1,63}' ); $flags{'-rfc'} ||= 1035; my $label = $labels{$flags{'-rfc'}} || die("Unknown DNS RFC: $flags{'-rfc'}"); if ($flags{'-rfc'} ne 2181 && exists $flags{'-wildcard'} && not defined $flags{'-wildcard'}) { $label = "(?:\\*|$label)"; } my $quant = '*'; if ($flags{'-minlabels'}) { $quant = '{' . ($flags{'-minlabels'} - 1) . ',}'; } return qr/^(?:$label$sep)$quant$label$sep?$/; } my $fqdn_regexp = _domain(-rfc => 1123, -minlabels => 2); use constant VALID_FQDN => sub { my $fqdn = shift; if ($fqdn && $fqdn =~ m/$fqdn_regexp/) { $fqdn =~ s/\.$//; return 0 if (length($fqdn) > 255); return 0 if (grep { length($_) > 63 } split(/\./, $fqdn)); return 1; } return 0; }; } |
quote:Op woensdag 3 juli 2013 13:54 schreef zoem het volgende:
En voor je het weet heb je zoiets: http://www.perlmonks.org/?node_id=393809![]()
Ik zou het lekker simpel houden. Als het even kan zou ik filter_var() (php >= 5.2.0) erbij betrekken voor de validatie.
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 | <?php public function compareValues($type,$compare1,$compare2){ $count1 =0; $count2 =0; switch ($type) { case 'Doctype': $var = '\$v->data->doctype'; break; default: break; } foreach($this->selectedData as $k=>$v){ $val = 'empty'; eval('$val = '.$var.';'); if($val && $val === $compare1)++$count1; if($val && $val === $compare2)++$count2; } return $count1.$count2; } ?> |
| 1 2 3 4 5 6 7 | SELECT `spider`.`id` AS spiderID, `spider`.`url` AS spiderURL, `spider`.`failed` AS spiderFailed FROM `spider` WHERE `spider`.`project_id` =7 AND `spider`.`processed` =0 LIMIT 1 |
| 1 2 3 4 5 6 7 8 9 10 11 | CREATE TABLE IF NOT EXISTS `spider` ( `id` bigint(20) unsigned NOT NULL AUTO_INCREMENT, `project_id` bigint(20) unsigned NOT NULL, `url` varchar(255) NOT NULL, `processed` tinyint(1) NOT NULL DEFAULT '0', `failed` tinyint(4) NOT NULL DEFAULT '0', PRIMARY KEY (`id`), UNIQUE KEY `project_id_2` (`project_id`,`url`), KEY `failed` (`failed`), KEY `project_id` (`project_id`,`processed`) ) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=103771614 ; |
Natuurlijk niet het antwoord wat je zoekt. Maar je kan het via een omweg ook gewoon orderen binnen php lijkt me.quote:Op donderdag 11 juli 2013 23:42 schreef Chandler het volgende:
Ik heb een query die raar doet wanneer ik gebruik wil maken van ORDER BY.
Zonder order by is deze query 0.0043 seconden, met ORDER BY `failed` kost deze query ruim 23 seconden!?
[ code verwijderd ]
Als ik een URL laad wil ik het liefst URLS laden die ik nog niet heb gehad (processed = 0) maar liefst ook de URLS die nog niet gelezen en mislukt zijn. Met huidige query lees ik deze 3x achter elkaar alvorens processed op 1 te zetten, alleen nu wilde ik met ORDER BY 'failed' ASC de URLS met een waarde die groter is dan 0 achter aan zetten en de URLS met waarde van 0 natuurlijk vooraan... oftewel eerst uitlezen.
Tabel
[ code verwijderd ]
Iemand een idee? oh ik heb maar 17m regeltjes....
Dat gaat je geheugen kostenquote:Op donderdag 11 juli 2013 23:49 schreef Purplesparks het volgende:
[..]
Natuurlijk niet het antwoord wat je zoekt. Maar je kan het via een omweg ook gewoon orderen binnen php lijkt me.
True dat, maar een potentiële mogelijkheid als chandler niet de oplossing weet te vinden van de lange order tijd.quote:
Neem anders eens failed op in je where-clause. Dan hoeft hij in wat minder rijen te sorteren.quote:Op donderdag 11 juli 2013 23:42 schreef Chandler het volgende:
Ik heb een query die raar doet wanneer ik gebruik wil maken van ORDER BY.
Zonder order by is deze query 0.0043 seconden, met ORDER BY `failed` kost deze query ruim 23 seconden!?
[ code verwijderd ]
Als ik een URL laad wil ik het liefst URLS laden die ik nog niet heb gehad (processed = 0) maar liefst ook de URLS die nog niet gelezen en mislukt zijn. Met huidige query lees ik deze 3x achter elkaar alvorens processed op 1 te zetten, alleen nu wilde ik met ORDER BY 'failed' ASC de URLS met een waarde die groter is dan 0 achter aan zetten en de URLS met waarde van 0 natuurlijk vooraan... oftewel eerst uitlezen.
Tabel
[ code verwijderd ]
Iemand een idee? oh ik heb maar 17m regeltjes....
Valt erg mee hoor als je het een beetje slim aanpakt, aangenomen dat er gewerkt wordt met een beperkte subset van de 17M rows (processed=0). Maar goed, de query optimaliseren heeft natuurlijk de voorkeur.quote:
Gaat het ook zo traag wanneer je order by gebruikt in andere tabellen of alleen in deze?quote:Op vrijdag 12 juli 2013 11:35 schreef Chandler het volgende:
Ja, en het rare is dat er geen filesort gebruikt wordt, dus het orderen gebeurd toch echt wel in het geheugen (als ik check met explain). Dacht zelf ook dat ik de indexes goed had en dat blijkt wel, maar het vervelende blijft dat ik per query met order by een kleine 1000x zolang bezig ben...
Maar hebben jullie tips? oh en de beperkte set van 17m rows zijn in dit geval zo'n 3,5m rows
Geen idee, rest van de tabellen zijn niet zo groot dus daar zal het allemaal wel meevallen... en daar zit het tijdsverlies in deze niet in....quote:Op vrijdag 12 juli 2013 11:38 schreef Purplesparks het volgende:
[..]
Gaat het ook zo traag wanneer je order by gebruikt in andere tabellen of alleen in deze?
Okee, wilde alleen uitsluiten dat het om de 1 of andere vage reden niet aan je sql prog zelf lag.quote:Op vrijdag 12 juli 2013 11:40 schreef Chandler het volgende:
[..]
Geen idee, rest van de tabellen zijn niet zo groot dus daar zal het allemaal wel meevallen... en daar zit het tijdsverlies in deze niet in....
Mijn stiefpa had een programma voor een bedrijf ontwikkeld, bij externe resultaten van bepaalde queries opvragen duurde het soms ook wel tot een minuut lang. Terwijl als hij het daar ter plekke testte een seconde of nog minder. Weet niet exact waar het aanlag maar hij heeft het opgelost. Hij maakte trouwens gebruik van delphi pascal in combinatie met een sql variant.quote:Op vrijdag 12 juli 2013 13:11 schreef Chandler het volgende:
Zowel lokaal als online test ik dit, aangezien mijn lokale test omgeving maar uit zo'n 5m regels bestaat... maar goed, het is een laptop en de online server heeft nogal wat meer power en daar is het zelfs sloom
Query test ik via phpmyadmin, domweg omdat het gemakkelijk is!
En wat doet een index op je WHERE clause én ORDER BY field(s)?quote:Op vrijdag 12 juli 2013 11:35 schreef Chandler het volgende:
Ja, en het rare is dat er geen filesort gebruikt wordt, dus het orderen gebeurd toch echt wel in het geheugen (als ik check met explain). Dacht zelf ook dat ik de indexes goed had en dat blijkt wel, maar het vervelende blijft dat ik per query met order by een kleine 1000x zolang bezig ben...
Maar hebben jullie tips? oh en de beperkte set van 17m rows zijn in dit geval zo'n 0,5m rows
@zoom:
Zonder order by
1 SIMPLE spider ref project_id_2,project_id project_id 9 const,const 536370
Met order by
1 SIMPLE spider index project_id_2,project_id failed 1 NULL 39 Using where
Dat zou in 1 go moeten kunnen.quote:Op donderdag 18 juli 2013 19:57 schreef Darkomen het volgende:
Ik probeer iedereen met een andere ip naar een maintenance pagina te sturen.
Alle subdomeinen, directories en files moeten geredirect worden, behalve de directory /maintenance/, de inhoud ervan, en de file maintenance.php
Een van de 2 niet redirecten lukt wel, maar beiden niet
Wat doe ik fout?
RewriteCond %{REMOTE_ADDR} !=123.456.789.0
RewriteCond %{REQUEST_URI} !=/maintenance.php
RewriteCond %{REQUEST_URI} !^/maintenance($|/)
RewriteRule .* http://www.domain.com/maintenance.php [L]
| 1 2 3 4 | RewriteEngine on LogLevel info rewrite:trace8 # Dit wil je na testen weer op sane values zetten, dus geen rewrite:info oid. of helemaal weg. RewriteCond %{REQUEST_URI} !=/maintenance(.php)?/? # matched /maintenance.php /maintenance optioneel met / aan het einde RewriteRule .* http://www.domain.com/maintenance.php [L] # volgens mij kanje ook [RL] gebruiken daar. |
Je hebt geloof ik zo'n message-event. Daarop luisteren of er een berichtje binnenkomt. Deze kun je in die daemon vervolgens sturen naar alle clientsquote:Op woensdag 24 juli 2013 15:42 schreef wobbel het volgende:
Iemand ervaring met PHP en Websockets?
Ik gebruik nu http://www.binarytides.com/websockets-php-tutorial/ dit en dat werkt prima voor testen, maar ik wil juist op random momenten data erheen sturen
Hoe kan ik naar alle users die verbinding hebben een berichtje sturen met "hoi leuk dat je een websocket verbinding hebt"? Nu is alles een reactie op een actie van de user/browser.
Maar daar vind ik ook niks in de documentatie hoe ik dat zou moeten doen.quote:Op woensdag 24 juli 2013 15:56 schreef Juicyhil het volgende:
Oh wacht even, dat is een andere. Ik gebruikte deze: http://code.google.com/p/phpwebsocket/
Die had ik ook al gegoogledquote:Op woensdag 24 juli 2013 16:01 schreef Juicyhil het volgende:
http://www.flynsarmy.com/(...)hat-application-2-0/
| 1 2 3 4 5 6 7 8 9 10 11 12 13 | ------------------------------------------------------------------------------- Private IP :Port #Pseudo Port Peer IP :Port Interface ------------------------------------------------------------------------------- 10.0.0.17 56086 57174 31.13.72.33 443 WAN2 10.0.0.17 56089 57177 74.125.136.189 443 WAN2 10.0.0.17 56092 57180 54.230.8.197 80 WAN2 10.0.0.17 56093 57181 54.230.8.197 80 WAN2 10.0.0.17 56094 57182 54.230.8.197 80 WAN2 10.0.0.17 56095 57183 50.18.122.32 80 WAN2 10.0.0.17 54041 55129 94.245.121.253 3544 WAN2 10.0.0.5 5761 38849 89.184.172.50 5080 WAN1 10.0.0.17 55688 56776 108.160.163.42 80 WAN2 10.0.0.17 55722 56810 74.125.136.18 443 WAN2 |
| 1 2 3 4 5 6 7 8 9 | <?php $regels = explode("\n", $tekst); $data = array(); foreach ( $regels as $regel ) { $data[] = array_map("trim", explode(" ", $regel)); } ?> |
Exploden op een spatie wordt hem niet, aangezien alle whitespaces uit spaties bestaan (erg lastig, je krijgt dan een array met 100 dingen haha)quote:
| 1 2 3 | <?php $bier = preg_split('/\s+/', " 10.0.0.17 55722 56810 74.125.136.18 443 WAN2"); ?> |
Dan vervang je eerst in een loopje alle dubbele spaties door een enkele zodat je uiteindelijk maar 1 spatie overhoudt.quote:Op vrijdag 9 augustus 2013 09:46 schreef wobbel het volgende:
Exploden op een spatie wordt hem niet, aangezien alle whitespaces uit spaties bestaan (erg lastig, je krijgt dan een array met 100 dingen haha)
| 1 2 3 4 5 6 7 8 9 10 | <?php $regels = explode("\n", preg_replace("/[[:blank:]]+/"," ",$tekst)); $data = array(); foreach ( $regels as $regelnummer => $regel ) { if ( $regelnummer>2 ) $data[] = array_map("trim", explode(" ", trim($regel))); } ?> |
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 | Array ( [0] => Array ( [0] => 10.0.0.17 [1] => 56086 [2] => 57174 [3] => 31.13.72.33 [4] => 443 [5] => WAN2 ) [1] => Array ( [0] => 10.0.0.17 [1] => 56089 [2] => 57177 [3] => 74.125.136.189 [4] => 443 [5] => WAN2 ) [2] => Array ( [0] => 10.0.0.17 [1] => 56092 [2] => 57180 [3] => 54.230.8.197 [4] => 80 [5] => WAN2 ) [3] => Array ( [0] => 10.0.0.17 [1] => 56093 [2] => 57181 [3] => 54.230.8.197 [4] => 80 [5] => WAN2 ) [4] => Array ( [0] => 10.0.0.17 [1] => 56094 [2] => 57182 [3] => 54.230.8.197 [4] => 80 [5] => WAN2 ) [5] => Array ( [0] => 10.0.0.17 [1] => 56095 [2] => 57183 [3] => 50.18.122.32 [4] => 80 [5] => WAN2 ) [6] => Array ( [0] => 10.0.0.17 [1] => 54041 [2] => 55129 [3] => 94.245.121.253 [4] => 3544 [5] => WAN2 ) [7] => Array ( [0] => 10.0.0.5 [1] => 5761 [2] => 38849 [3] => 89.184.172.50 [4] => 5080 [5] => WAN1 ) [8] => Array ( [0] => 10.0.0.17 [1] => 55688 [2] => 56776 [3] => 108.160.163.42 [4] => 80 [5] => WAN2 ) [9] => Array ( [0] => 10.0.0.17 [1] => 55722 [2] => 56810 [3] => 74.125.136.18 [4] => 443 [5] => WAN2 ) ) |
Je zou daarna door de array kunnen gaan en alles wat geen spatie is gebruiken toch?quote:Op vrijdag 9 augustus 2013 09:46 schreef wobbel het volgende:
[..]
Exploden op een spatie wordt hem niet, aangezien alle whitespaces uit spaties bestaan (erg lastig, je krijgt dan een array met 100 dingen haha)
| 1 2 3 | <?php preg_replace('/(\s)+/', ' ', $string); ?> |
Ik heb het op deze manier gedaan:quote:Op vrijdag 9 augustus 2013 09:50 schreef mstx het volgende:
[ code verwijderd ]
Resultaat:
[ code verwijderd ]
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 | <?php $string = "------------------------------------------------------------------------------- Private IP :Port #Pseudo Port Peer IP :Port Interface ------------------------------------------------------------------------------- 10.0.0.17 56086 57174 31.13.72.33 443 WAN2 10.0.0.17 56089 57177 74.125.136.189 443 WAN2 10.0.0.17 56092 57180 54.230.8.197 80 WAN2 10.0.0.17 56093 57181 54.230.8.197 80 WAN2 10.0.0.17 56094 57182 54.230.8.197 80 WAN2 10.0.0.17 56095 57183 50.18.122.32 80 WAN2 10.0.0.17 54041 55129 94.245.121.253 3544 WAN2 10.0.0.5 5761 38849 89.184.172.50 5080 WAN1 10.0.0.17 55688 56776 108.160.163.42 80 WAN2 10.0.0.17 55722 56810 74.125.136.18 443 WAN2"; $count = 0; foreach ( preg_split("/((\r?\n)|(\r\n?))/", $string ) as $regel ) { if ( $count > 2 ) { $nat_array[] = array_filter ( preg_split('/\s+/', $regel ) ); } $count++; } echo "<pre>"; print_r ( $nat_array ); echo "</pre>"; ?> |
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 | Array ( [0] => Array ( [1] => 10.0.0.17 [2] => 56086 [3] => 57174 [4] => 31.13.72.33 [5] => 443 [6] => WAN2 ) [1] => Array ( [1] => 10.0.0.17 [2] => 56089 [3] => 57177 [4] => 74.125.136.189 [5] => 443 [6] => WAN2 ) [2] => Array ( [1] => 10.0.0.17 [2] => 56092 [3] => 57180 [4] => 54.230.8.197 [5] => 80 [6] => WAN2 ) [3] => Array ( [1] => 10.0.0.17 [2] => 56093 [3] => 57181 [4] => 54.230.8.197 [5] => 80 [6] => WAN2 ) [4] => Array ( [1] => 10.0.0.17 [2] => 56094 [3] => 57182 [4] => 54.230.8.197 [5] => 80 [6] => WAN2 ) [5] => Array ( [1] => 10.0.0.17 [2] => 56095 [3] => 57183 [4] => 50.18.122.32 [5] => 80 [6] => WAN2 ) [6] => Array ( [1] => 10.0.0.17 [2] => 54041 [3] => 55129 [4] => 94.245.121.253 [5] => 3544 [6] => WAN2 ) [7] => Array ( [1] => 10.0.0.5 [2] => 5761 [3] => 38849 [4] => 89.184.172.50 [5] => 5080 [6] => WAN1 ) [8] => Array ( [1] => 10.0.0.17 [2] => 55688 [3] => 56776 [4] => 108.160.163.42 [5] => 80 [6] => WAN2 ) [9] => Array ( [1] => 10.0.0.17 [2] => 55722 [3] => 56810 [4] => 74.125.136.18 [5] => 443 [6] => WAN2 ) ) |
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 | <?php $string = "------------------------------------------------------------------------------- Private IP :Port #Pseudo Port Peer IP :Port Interface ------------------------------------------------------------------------------- 10.0.0.17 56086 57174 31.13.72.33 443 WAN2 10.0.0.17 56089 57177 74.125.136.189 443 WAN2 10.0.0.17 56092 57180 54.230.8.197 80 WAN2 10.0.0.17 56093 57181 54.230.8.197 80 WAN2 10.0.0.17 56094 57182 54.230.8.197 80 WAN2 10.0.0.17 56095 56810 50.18.122.32 80 WAN2 10.0.0.17 54041 55129 94.245.121.253 3544 WAN2 10.0.0.5 5761 38849 89.184.172.50 5080 WAN1 10.0.0.17 55688 56776 108.160.163.42 80 WAN2 10.0.0.17 55722 56810 74.125.136.18 443 WAN2"; $count = 0; $nat_array = array ( ); $pseudo_array = array ( ); foreach ( preg_split("/((\r?\n)|(\r\n?))/", $string ) as $regel ) { if ( $count > 2 ) { $nat_array[$count] = array_filter ( preg_split('/\s+/', $regel, 6, PREG_SPLIT_NO_EMPTY ) ); $pseudo_array[] = $nat_array[$count][2]; } $count++; } $pseudo_count = array_count_values ( $pseudo_array ); foreach ( $nat_array as $key => $value ) { echo "Key: " . $key . "<br />"; echo "IP: " . $value[0] . "<br />"; echo "Pseudo poort: " . $value[2] . "<br />"; if ( $pseudo_count[$value[2]] > 1 ) { echo "Dubbel: Jep!<br /><br />"; } else { echo "Dubbel: nee<br /><br />"; } }?> |
Al eens naar Ratchet gekeken? http://socketo.me/ En idd ook 0MQ zoals ursel al zegt.quote:Op woensdag 24 juli 2013 15:42 schreef wobbel het volgende:
Iemand ervaring met PHP en Websockets?
Ik gebruik nu http://www.binarytides.com/websockets-php-tutorial/ dit en dat werkt prima voor testen, maar ik wil juist op random momenten data erheen sturen
Hoe kan ik naar alle users die verbinding hebben een berichtje sturen met "hoi leuk dat je een websocket verbinding hebt"? Nu is alles een reactie op een actie van de user/browser.
Mijn exceptions zijn altijd iets in de zin van 'Er is iets misgegaan'quote:
Nah, zoekt zo moeilijkquote:Op woensdag 14 augustus 2013 16:31 schreef Skunk-m het volgende:
Kun je artikelen en forum posts beter in bestanden zetten of in een mysql tabel wat betreft prestaties..?
Want op een site waar ik zit wou iemand een nieuwe versie maken zeg maar en die ging alle artikelen en forum posts in bestandjes en mappen zetten met beperkte info in mysql en ik vroeg me af of dat wel nut ofzo had..
Databases zijn daar júist voor bedoeld. Van enkele miljoenen records ligt een rdbms absoluut niet wakker. Databases op zichzelf zijn ook gewoon bestanden, waarbij de opslagwijze afhangt van de gekozen storage engine. Dus in feite probeert hij zijn eigen databasesysteem te ontwerpen. Leuk als hobbyprojectje ter leer ende vermaeck, maar totaal niet aan te raden. Je gaat geheid tegen problemen oplopen naarmate het complexer/drukker wordt tot op het punt dat het systeem niet meer houdbaar isquote:Op woensdag 14 augustus 2013 16:31 schreef Skunk-m het volgende:
Kun je artikelen en forum posts beter in bestanden zetten of in een mysql tabel wat betreft prestaties..?
Want op een site waar ik zit wou iemand een nieuwe versie maken zeg maar en die ging alle artikelen en forum posts in bestandjes en mappen zetten met beperkte info in mysql en ik vroeg me af of dat wel nut ofzo had..
Ok, als ik dat soort rare fratsen zie denk ik altijd die zullen wel iets weten waar ik niks vanaf weet en dat zal kwa prestatie waarschijnlijk schelen ofzo...quote:Op woensdag 14 augustus 2013 19:45 schreef zoem het volgende:
[..]
Databases zijn daar júist voor bedoeld. Van enkele miljoenen records ligt een rdbms absoluut niet wakker. Databases op zichzelf zijn ook gewoon bestanden, waarbij de opslagwijze afhangt van de gekozen storage engine. Dus in feite probeert hij zijn eigen databasesysteem te ontwerpen. Leuk als hobbyprojectje ter leer ende vermaeck, maar totaal niet aan te raden. Je gaat geheid tegen problemen oplopen naarmate het complexer/drukker wordt tot op het punt dat het systeem niet meer houdbaar is
Wat ik me wel voor kan stellen is dat items als afbeeldingen apart op de schijf worden geplaatst.
Ja, hoe wou het je anders doen?quote:Op donderdag 15 augustus 2013 01:03 schreef Skunk-m het volgende:
Maar het is wel beter voor prestaties om de tekst inhoud in een aparte tabel te zetten bij forum of niet..?
Ik bedoel dat wat ze daar de body noemen in een aparte tabel komt..quote:Op donderdag 15 augustus 2013 18:01 schreef zoem het volgende:
[..]
Ja, hoe wou het je anders doen?Dat volgt uit het normalisatieproces. Reacties horen opgeslagen te worden in een reactietabel, die dan bijvoorbeeld weer gelinkt kan zijn aan een topictabel.
Zie StackOverflow: How to design a database design for forums?
Ok Ming de deur uit, image2mpeg gebruikt, werk goed!quote:Op vrijdag 16 augustus 2013 14:28 schreef Darkomen het volgende:
Iemand ervaring met Php Ming
Ik maak hier namelijk een flash swf mee van een set foto's, en dat werkt allemaal prima, ziet er perfect uit in de browser.
Maar als je het upload naar youtube dan duurt het filmpje maar 1 seconde.
Het lijkt erop dat de framerate en en aantal frames niet juist doorkomen, terwijl ik die wel zet!
Als ik namelijk dmv ffmpeg probeer te converten naar bijvoorbeeld mp4 dan zie ik dat de swf geen frame en bit rate heeft.
Heb het script even niet hier, maandag kan ik die wel even posten.
| 1 2 3 4 5 6 7 8 | +----------+--------+------+-------+------+------+ | MasterId | Id1 | Id2 | Id3 | Id4 | ... | +----------+--------+------+-------+------+------+ | 1 | 1854 | 512 | 4561 | 813 | ... | | 2 | 6484 | 468 | 1681 | 6818 | ... | | 5 | 7871 | 1684 | 46841 | 6581 | ... | | ... | ... | ... | ... | ... | ... | +----------+--------+------+-------+------+------+ |
| 1 2 3 4 5 6 7 8 | +------+--+-------+------------+-----+-----+ | Id | | Name | Date | ... | ... | +------+--+-------+------------+-----+-----+ | 512 | | Jan | 09-08-1991 | ... | ... | | 6818 | | Piet | 02-07-1980 | ... | ... | | 6581 | | Klaas | 12-04-1975 | ... | .. | | ... | | ... | ... | ... | ... | +------+--+-------+------------+-----+-----+ |
id1, id2 en id3 zijn obfuscated namen of...? Kunnen die id's in al die kolommen terug te vinden zijn?quote:Op woensdag 4 september 2013 20:46 schreef pascal08 het volgende:
Ik heb 2 tables: 1 table met een overzicht van Id's en 1 table met info per Id. Wat is de meest efficiënte manier om alle info per Id per MasterId uit de tables te halen?
Table 1:
[ code verwijderd ]
Table 2:
[ code verwijderd ]
Ik wil dus alle info voor elke Id per MasterId. Voor MasterId 1 wil ik graag de naam, datum en de rest van de info hebben voor de Id's 1854, 512, 4561 en 813. Dit is een voorbeeld, in m'n echte tabel heb ik duizenden MasterId's en per Id +/- 50 kolommen met info. Ik weet hoe ik dmv PHP een foreach loop kan maken en zo een aparte query voor elke Id per MasterId te laten uitvoeren, maar dat lijkt me hoogst inefficiënt. Wat zouden jullie doen?
Uhmm... die Id's in table 1 zijn terug te vinden in de Id-kolom in table 2, ja... (als je dat bedoelt). Een Id in table 1 kan ook leeg zijn. In de echte tabel zijn er 18 (of minder) Id's per MasterId. Er zijn dus 18 kolommen voor de Id's waarvan sommige NULL kunnen bevatten.quote:Op woensdag 4 september 2013 20:53 schreef slacker_nl het volgende:
[..]
id1, id2 en id3 zijn obfuscated namen of...? Kunnen die id's in al die kolommen terug te vinden zijn?
SPOILEROm spoilers te kunnen lezen moet je zijn ingelogd. Je moet je daarvoor eerst gratis Registreren. Ook kun je spoilers niet lezen als je een ban hebt.
[ Bericht 8% gewijzigd door pascal08 op 04-09-2013 21:03:51 ]
quote:Op woensdag 4 september 2013 20:58 schreef pascal08 het volgende:
[..]
Uhmm... die Id's in table 1 zijn terug te vinden in de Id-kolom in table 2, ja... (als je dat bedoelt). Een Id in table 1 kan ook leeg zijn. In de echte tabel zijn er 18 (of minder) Id's per MasterId. Er zijn dus 18 kolommen voor de Id's waarvan sommige NULL kunnen bevatten.Welke aap heeft dat bedacht?SPOILEROm spoilers te kunnen lezen moet je zijn ingelogd. Je moet je daarvoor eerst gratis Registreren. Ook kun je spoilers niet lezen als je een ban hebt.
* mstx mompelt iets over een koppeltabelOp donderdag 2 juli 2009 22:41 schreef RTB het volgende:
als ik elk rap"liedje" een kans moest geven was ik aan het eind van dit millennium nog bezig met het tempo waarin die kotshoop uitgebraakt wordt.
👾
Geef eens een voorbeeldje.quote:Op woensdag 4 september 2013 21:08 schreef mstx het volgende:
[..]
Welke aap heeft dat bedacht?
* mstx mompelt iets over een koppeltabel
Extra tabel met 2 kolommen: squad_id | player_idquote:
| Forum Opties | |
|---|---|
| Forumhop: | |
| Hop naar: | |