FOK!forum / Digital Corner / [PHP/(My)SQL] voor dummies #110
Juicyhilwoensdag 19 juni 2013 @ 00:27
php.jpg


Als je vragen hebt over PHP/MySQL, dan zit je hier goed met een vaste kliek guru's en een groot aantal regelmatige bezoekers. Beperk je vragen niet tot "hij doet het niet" of "hij geeft een fout" - onze glazen bol is kapot en we willen graag van je weten wát er niet lukt en wélke foutmelding je precies krijgt :)

Zie ook:
PHP Dataverwerking
Officiële PHP website
PHP Documentatie
MySQL Reference Manual
Yet Another PHP Faq
PHP Cheat Sheet
PHP5 Power Programming - boek met uitleg over OOP, Pear, XML, etc

Tutorials:
W3Schools PHP
W3Schools SQL

Succes heren met het volgende deeltje!
Lightwoensdag 19 juni 2013 @ 06:28
quote:
0s.gif Op woensdag 19 juni 2013 00:26 schreef Juicyhil het volgende:

[..]

Auto-complete zoals IntelliSense in Visual Studio is inderdaad heel erg fijn. Maar zo goed als die ben ik hem voor PHP nergens tegengekomen. Zeker niet in combinatie met frameworks (zeker niet de wat onbekendere).
Ik heb nooit met Visual Studio gewerkt, maar de auto-complete van PhpStorm vind ik zeer goed.
KomtTijd...woensdag 19 juni 2013 @ 09:31
ik vind de autocomplete van geany erg relaxed. Komt misschien doordat ik die als enige gewend ben maar ik gebruik het best veel.
Vult ook class- variable- en functienamen aan die je in andere openstaande bestanden in gebruik hebt. Das wel handig, behalve dat je libraries e.d. natuurlijk (bijna) nooit open hebt staan.
Chandlerwoensdag 19 juni 2013 @ 23:24
Ik heb een groot nadeel ontdekt van InnoDB, dat als je een veld toevoegd op een tabel met 5 miljoen records, dat deze er dan zeker 3 uur over doet (en nog steeds bezig is...)....
pascal08woensdag 19 juni 2013 @ 23:52
quote:
0s.gif Op woensdag 19 juni 2013 23:24 schreef Chandler het volgende:
Ik heb een groot nadeel ontdekt van InnoDB, dat als je een veld toevoegd op een tabel met 5 miljoen records, dat deze er dan zeker 3 uur over doet (en nog steeds bezig is...)....
_O-

Heb je wel gepartitioneerd?
Boze_Appelwoensdag 19 juni 2013 @ 23:56
Dan heb je inderdaad ergens iets gruwelijk fout gedaan of je draait die DB op een pentium 1 ofzo.
Chandlerdonderdag 20 juni 2013 @ 00:12
Dan doen ik en mensen uit 125.000 resultaten op google dus blijkbaar iets fout :7

https://www.google.nl/sea(...)ceid=chrome&ie=UTF-8
-edit 2-
http://stackoverflow.com/(...)lter-table-of-innodb
Is niet precies mijn verandering maar geeft wel aan dat het tijd kost... nogal wat... maar met mogelijke (snellere) oplossingen..

-edit 1-
Oh en er is natuurlijk een workaround.

Kopieer table structuur, maak nieuw 'tijdelijk' tabel aan, pas structuur aan, exporteer data oude tabel, importeer data nieuwe tabel... scheelt aanzienlijk in de tijd...

[ Bericht 17% gewijzigd door Chandler op 20-06-2013 00:36:46 ]
rekenwonderdonderdag 20 juni 2013 @ 14:54
Scheelt dat echt aanzienlijk? Ik dacht namelijk dat InnoDB onder water hetzelfde deed en dat daarmee ook de traagheid te verklaren was.
Chandlerdonderdag 20 juni 2013 @ 22:34
Aanzienlijk weet ik eigenlijk niet, heb de querys vannacht gedaan (lokaal) en ben gaan slapen... en het fijne van phpmyadmin is dat deze geen TIJD MEE GEEFT (duur van query, begin tijd, eind tijd en dat soort informatie...)

De export was zo gepiept, minuutje of 10. Het invoeren van de data heeft zeker een halfuur geduurd maar zou ook 2 uur kunnen zijn :@
Chandlervrijdag 21 juni 2013 @ 21:06
Weer wat anders met curl,

Ik krijg vaak een CURLE_OK terug van curl_errno, maar soms als ik met curl_getinfo de http code uitlees is deze geen 200 maar 0; dus kan ik er op dit moment niets mee. Als ik kijk wat curl_error uitspuwt zie ik veelal van dit soort berichten (zonder tijd natuurlijk)

2013-06-21 20:58:23 - Could not resolve host: (nil); Host not found
2013-06-21 20:58:41 - Connection timed out after 2013 milliseconds
2013-06-21 20:59:04 - Resolving timed out after 2012 milliseconds
2013-06-21 20:59:33 - Operation timed out after 2013 milliseconds with 0 out of -1 bytes received

Op zich niets mis mee hoor, met deze gegevens kan ik ook wat, alleen vraag ik mij af of er ergens meer over dit soort foutmeldingen te vinden is, ik zou graag direct mijn script willen aanpassen op 'alle' mogelijkheden die kunnen voorkomen.

Iemand een idee?

[ Bericht 0% gewijzigd door Chandler op 21-06-2013 21:11:32 ]
slacker_nlvrijdag 21 juni 2013 @ 22:07
quote:
5s.gif Op vrijdag 21 juni 2013 21:06 schreef Chandler het volgende:
Weer wat anders met curl,

Ik krijg vaak een CURLE_OK terug van curl_errno, maar soms als ik met curl_getinfo de http code uitlees is deze geen 200 maar 0; dus kan ik er op dit moment niets mee. Als ik kijk wat curl_error uitspuwt zie ik veelal van dit soort berichten (zonder tijd natuurlijk)

2013-06-21 20:58:23 - Could not resolve host: (nil); Host not found
2013-06-21 20:58:41 - Connection timed out after 2013 milliseconds
2013-06-21 20:59:04 - Resolving timed out after 2012 milliseconds
2013-06-21 20:59:33 - Operation timed out after 2013 milliseconds with 0 out of -1 bytes received

Op zich niets mis mee hoor, met deze gegevens kan ik ook wat, alleen vraag ik mij af of er ergens meer over dit soort foutmeldingen te vinden is, ik zou graag direct mijn script willen aanpassen op 'alle' mogelijkheden die kunnen voorkomen.

Iemand een idee?
Poept CURL geen meuk uit als je timeout verlopen is..? Maar je MOET kijken naar de HTTP code, anders weet je neit hoe/wat/waar. Dus als deze 0 is weet je dat er iets fout is.

Je kan eventueel ook eerst dit proberen op de hostname: http://php.net/manual/en/function.gethostbyname.php
http://www.php.net/manual/en/function.checkdnsrr.php (type A, AAAA, CNAME moeten bestaan, iig 1 vd 3).

[ Bericht 8% gewijzigd door slacker_nl op 21-06-2013 22:14:18 ]
Chandlervrijdag 21 juni 2013 @ 22:24
quote:
0s.gif Op vrijdag 21 juni 2013 22:07 schreef slacker_nl het volgende:
Poept CURL geen meuk uit als je timeout verlopen is..?
[/qoute]
Nee, helaas niet, anders dan de foutmelding in curl_error maar de status is OK! ;)

[quote]Maar je MOET kijken naar de HTTP code, anders weet je neit hoe/wat/waar. Dus als deze 0 is weet je dat er iets fout is.
Daardoor moet ik er inderdaad dus naar kijken, want een 200 is gewoon OK! zeker als de lengte van de content langer is dan 0.

quote:
Je kan eventueel ook eerst dit proberen op de hostname: http://php.net/manual/en/function.gethostbyname.php
http://www.php.net/manual/en/function.checkdnsrr.php (type A, AAAA, CNAME moeten bestaan, iig 1 vd 3).
Ik ben hier bekend mee, is op zich niet nodig, de foutmeldingen die CURL geeft geven dit ook al aan, alleen vraag ik mij af of er niet een lijst beschikbaar is waarin ik kan zien welke mogelijke fouten er allemaal tevoorschijn kunnen komen?

Voor alle gegeven fouten zet ik in de database dat de url fout en dus niet meer bezocht hoeft te worden (maar bij een timeout waarbij wel data ontvangen is, wil ik dat het liefst voorkomen! want die mag van mij wel meerdere kansen krijgen, eventueel op andere tijdstippen, (misschien is de site ff druk!?))
wipes66zaterdag 22 juni 2013 @ 00:18
php 5.5 is trouwens al weer uit:

http://php.net/ChangeLog-5.php#5.5.0

* Added Zend Opcache extension and enable building it by default.

schijnt ook iets sneller te zijn dan apc, alleen er zit geen user cache bij :s)
Lightzondag 23 juni 2013 @ 00:39
quote:
0s.gif Op vrijdag 21 juni 2013 22:24 schreef Chandler het volgende:

[..]

Daardoor moet ik er inderdaad dus naar kijken, want een 200 is gewoon OK! zeker als de lengte van de content langer is dan 0.
Alle 2xx return codes geven succes aan (in een of andere vorm).
Chandlerzondag 23 juni 2013 @ 02:57
quote:
0s.gif Op zondag 23 juni 2013 00:39 schreef Light het volgende:
Alle 2xx return codes geven succes aan (in een of andere vorm).
Klopt alleen de 200 met content ;) de rest is voor mij niet interessant als uitleesbaar ;)
Chandlermaandag 24 juni 2013 @ 00:19
nvm.

[ Bericht 99% gewijzigd door Chandler op 24-06-2013 00:25:29 ]
KomtTijd...dinsdag 25 juni 2013 @ 11:50
Huh... Doet PHP strings met variables erin cachen ofzo?

heb meerdere strings in de vorm van "{$rootdir}/path/to/file.php", nu heb ik $rootdir veranderd maar een hoop bestanden zoeken desondanks nog steeds in de oude rootdir...
zoemdinsdag 25 juni 2013 @ 11:54
Nar mijn weten niet. Heb je wat code om te laten zien?
KomtTijd...dinsdag 25 juni 2013 @ 11:57
of anders dirname(__FILE__) ?
1
2
3
4
5
6
<?php
$thisdir 
dirname(__FILE__);
$rootdir substr($thisdir,0,strrpos($thisdir,'/'));

require_once(
"{$rootdir}/config.php");
?>


[ Bericht 0% gewijzigd door KomtTijd... op 25-06-2013 12:08:58 ]
Rockfiredinsdag 25 juni 2013 @ 12:04
quote:
14s.gif Op dinsdag 25 juni 2013 11:57 schreef KomtTijd... het volgende:
of anders dirname(__FILE__) ?
[ code verwijderd ]

je hebt door dat er geen $ staat voor thisdir?
KomtTijd...dinsdag 25 juni 2013 @ 12:09
zo beter?

tevens in libraries:
1
2
3
4
5
<?php
if (!defined('SMARTY_DIR')) {
    
define('SMARTY_DIR'dirname(__FILE__) . DS);
}
?>


[ Bericht 98% gewijzigd door KomtTijd... op 25-06-2013 12:20:20 ]
KomtTijd...dinsdag 25 juni 2013 @ 12:47
Raar zeg. Ik krijg het dus echt niet voor elkaar de directory te renamen. Een kopie maken werkt wel.
zoemdinsdag 25 juni 2013 @ 13:21
Ik snap wat je bedoelt, maar met de gegeven code kan ik er niet veel uit opmaken. Heb je al var_dump gedaan op de betreffende locaties? Kan het zijn dat include_path gebruikt wordt ipv de verwachte dir?
KomtTijd...dinsdag 25 juni 2013 @ 14:06
ik denk dat ik beter de situatie (wat beter) kan omschrijven:

1) ik heb een map met scripts erin op een linux (ubuntu 12.04) server waarin ik ontwikkel (zeg /var/www/
2) ik rename de map via een SFTP-verbinding zodat dit de live versie wordt (is het idee)
3) alle calls naar dirname(__FILE__) blijven de oude mapnaam teruggeven met als gevolg hele ritsen errors van includes die niet meer gevonden kunnen worden.
4) ik rename de map weer naar zijn oorspronkelijke naam, alles gaat weer goed
5) ik maak (wederom via SFTP) een kopie van de map en rename die naar de naam die ik wil hebben, vervolgens verwijder ik de oorspronkelijke map
6) alles gaat goed, de applicatie draait succesvol op zijn nieuwe locatie.

ik heb een clearstatcache() geprobeerd maar dat hielp niet, misschien heeft het wel met het filesystem te maken?
KomtTijd...dinsdag 25 juni 2013 @ 17:28
quote:
0s.gif Op woensdag 19 juni 2013 23:24 schreef Chandler het volgende:
Ik heb een groot nadeel ontdekt van InnoDB, dat als je een veld toevoegd op een tabel met 5 miljoen records, dat deze er dan zeker 3 uur over doet (en nog steeds bezig is...)....
Even een index toevoegen over een kleine 3M records kost ook langer dan een kwartiertje...
Chandlerdinsdag 25 juni 2013 @ 17:59
quote:
14s.gif Op dinsdag 25 juni 2013 17:28 schreef KomtTijd... het volgende:

[..]

Even een index toevoegen over een kleine 3M records kost ook langer dan een kwartiertje...
Tja, maar volgens mij is een index apart, maar een veld toevoegen of wijzigen duurt helaas VEEL LANGER! :( maar er is een oplossing, export, aanpassen import (zonder tables aan te maken)
slacker_nldinsdag 25 juni 2013 @ 18:25
quote:
14s.gif Op dinsdag 25 juni 2013 14:06 schreef KomtTijd... het volgende:
ik denk dat ik beter de situatie (wat beter) kan omschrijven:

1) ik heb een map met scripts erin op een linux (ubuntu 12.04) server waarin ik ontwikkel (zeg /var/www/
2) ik rename de map via een SFTP-verbinding zodat dit de live versie wordt (is het idee)
3) alle calls naar dirname(__FILE__) blijven de oude mapnaam teruggeven met als gevolg hele ritsen errors van includes die niet meer gevonden kunnen worden.
4) ik rename de map weer naar zijn oorspronkelijke naam, alles gaat weer goed
5) ik maak (wederom via SFTP) een kopie van de map en rename die naar de naam die ik wil hebben, vervolgens verwijder ik de oorspronkelijke map
6) alles gaat goed, de applicatie draait succesvol op zijn nieuwe locatie.

ik heb een clearstatcache() geprobeerd maar dat hielp niet, misschien heeft het wel met het filesystem te maken?
Heel simpel, maar zo effectief:

Symlink: /var/www/ditisdelivecode

Je hebt je dir:

/var/www/versie1.2
/var/www/versie1.3

Je doet:

rm /var/www/ditisdelivecode
ln -s /var/www/versie1.3 /var/www/ditisdelivecode

Tada, fixed.

Terug gaan?
rm /var/www/ditisdelivecode
ln -s /var/www/versie1.2 /var/www/ditisdelivecode


En eigenlijk moet je gewoon het oude weggooien, je hebt toch alles in version control staan.
KomtTijd...dinsdag 25 juni 2013 @ 18:42
Versiebeheer, ja dat moeten we nog altijd eens implementeren. 't is een offline omgeving, dat maakt het niet makkelijker.
Maar er worden wel dagelijks (off-site) backups gemaakt dus oude zooi flikker ik inderdaad gewoon weg.

Een symlink maken is ook wel een goed idee. Niet aan gedacht :)
Swetseneggerwoensdag 26 juni 2013 @ 11:18
Mogguh,

Ik heb een klein SQL vraagje. Waarschijnlijk heel simpel op te lossen maar ik kan het niet verzinnen.

stel ik heb de volgende tabel

1
2
3
4
5
idA  | idB
-----+----
3    | 15
8    | 11
136  | 3

Nu wil ik alle rijen selecteren waar idA danwel B een 3 bevat, maar dan wil ik alleen de value terug die géén 3 is, in dit voorbeeld krijg ik dus 15 en 136 terug.

Hoe doe ik dat?
mstxwoensdag 26 juni 2013 @ 11:22
1SELECT IF(idA=3, idB, idA) FROM tabel WHERE idA=3 OR idB=3
Swetseneggerwoensdag 26 juni 2013 @ 11:26
quote:
0s.gif Op woensdag 26 juni 2013 11:22 schreef mstx het volgende:

[ code verwijderd ]

_O_ zo simpel.
mstxwoensdag 26 juni 2013 @ 11:30
Ik heb zelf ook een vraagje, deze (simpele) query is soms traag:

1
2
3
4
5
6
7
SELECT 
 COUNT(*)
FROM
 tabelA 
  LEFT JOIN tabelB ON tabelA.id=tabelB.id_van_tabelA 
WHERE 
 tabelA.kolomX=1 AND tabelB.kolomY=1

De explain zegt dit:
1
2
3
id     select_type     table     type     possible_keys     key     key_len     ref     rows     Extra 
1     SIMPLE     tabelB     ref     PRIMARY,kolomY     kolomY     1     const     123980     Using where
1     SIMPLE     tabelA     ref     id_van_tabelA     id_van_tabelA     5     database.tabelB.id,const     7     Using index
Kan dat sneller?
zoemwoensdag 26 juni 2013 @ 11:59
Ja, een aparte counter bijhouden ipv COUNT(*) uitvoeren :P
Pakspulwoensdag 26 juni 2013 @ 12:58
quote:
0s.gif Op woensdag 26 juni 2013 11:59 schreef zoem het volgende:
Ja, een aparte counter bijhouden ipv COUNT(*) uitvoeren :P
dit performance technisch gezien de beste oplossing t.o.v. count queries. Je moet wel in de applicatie goed testen dat de tel kolom goed bij blijft, anders geef je valse waardes weer.
mstxwoensdag 26 juni 2013 @ 13:11
Zou kunnen, het gaat om het tellen van bijvoorbeeld het aantal berichten in een forum topic, waarvan het topic niet verwijderd is en het bericht ook aan een voorwaarde moet voldoen. Dan zou ik inderdaad het aantal berichten per topic kunnen bijhouden, maar als je dan bijvoorbeeld het aantal berichten per user of het aantal berichten in een bepaald subforum wil tellen moet je alsnog een count + join doen, of dat ook allemaal apart weer bijhouden en bij het plaatsen/verwijderen van een bericht al die tellers weer updaten, lijkt me een beetje omslachtig. :P
KomtTijd...woensdag 26 juni 2013 @ 13:16
Is die query zo'n performance hit dan? Volgens mij moet die vrij snel kunnen met de juiste indexes, toch?
mstxwoensdag 26 juni 2013 @ 13:22
quote:
14s.gif Op woensdag 26 juni 2013 13:16 schreef KomtTijd... het volgende:
Is die query zo'n performance hit dan? Volgens mij moet die vrij snel kunnen met de juiste indexes, toch?
Hij komt wel redelijk vaak voor in m'n slow query log. :')

1
2
3
# Query_time: 4.404715  Lock_time: 0.000632 Rows_sent: 1  Rows_examined: 401908
SET timestamp=1372244412;
SELECT COUNT(*) AS num_comments FROM `comments` LEFT JOIN `topics` ON `topics`.`id`=`comments`.`topic_id`  WHERE `comments`.`type`=1 AND `topics`.`isactive`='Y';
Op comments.type en topics.isactive zit een index.

Het zal wel fout gaan bij "Rows_examined: 401908" maar geen idee hoe ik dat precies kan verbeteren.
KomtTijd...woensdag 26 juni 2013 @ 13:58
heb je ook een index op comments.topic_id?
mstxwoensdag 26 juni 2013 @ 14:39
Yes.
papernotewoensdag 26 juni 2013 @ 19:05
Laat eens een EXPLAIN zien.

-edit: laat maar, die staat er boven :')

Is het datatype van isActive een bool? Misschien kun je nog een USE INDEX toevoegen, omdat hij bij de eerste SELECT kiest voor kolomY en niet voor PRIMARY?

[ Bericht 45% gewijzigd door papernote op 26-06-2013 19:10:56 ]
Chandlerwoensdag 26 juni 2013 @ 20:29
Ik loop tegen iets in CURL aan, voor vele URLS krijg ik een goede status terug van CURL maar sommige een foutmelding, deze foutmelding is vaak Could not resolve host: (nil); Host not found terwijl als ik met de browser naar deze url ga, bestaat deze wel!? en laad erg snel.

Mijn scriptje draait 25 URLS tegelijk met een timeout van 10 seconden.. Dus nu vraag ik mij af?! waar ligt dit aan? mijn opts zijn als volgt;

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
<?php
$setopt_array 
= array(CURLOPT_TIMEOUT              => $cronjobSettings['curl_timeout'],            // in seconds
                      
CURLOPT_TIMEOUT_MS           => $cronjobSettings['curl_timeout'] * 1000,     // in ms
                      
CURLOPT_CONNECTTIMEOUT       => $cronjobSettings['curl_timeout'],            // in seconds
                      
CURLOPT_CONNECTTIMEOUT_MS    => $cronjobSettings['curl_timeout'] * 1000,     // in ms
                      
CURLOPT_NOBODY               => false,                                       // return body
                      
CURLOPT_VERBOSE              => false,                                       // Minimize logs
                      
CURLOPT_AUTOREFERER          => true,                                        // ?
                      
CURLOPT_FAILONERROR          => true,                                        // fail connection on error!
                      
CURLOPT_RETURNTRANSFER       => true,                                        // return (get) data
                      
CURLOPT_SSL_VERIFYHOST       => false,                                       // no certificate
                      
CURLOPT_SSL_VERIFYPEER       => false,                                       // no verify!
                      
CURLOPT_POST                 => false,                                       // no posting
                      
CURLOPT_FOLLOWLOCATION       => true,                                        // follow redirects
                      
CURLOPT_MAXREDIRS            => 3,                                           // max number of redirects to follow
                      
CURLOPT_DNS_USE_GLOBAL_CACHE => false,
                      
CURLOPT_DNS_CACHE_TIMEOUT    => 2,
/*
                      CURLOPT_LOW_SPEED_LIMIT   => 10,                                          // in bytes
                      CURLOPT_LOW_SPEED_TIME    => $cronjobSettings['curl_timeout'],            // in seconds
                      CURLOPT_NOSIGNAL          => 1,                                           // exit if no signal is found
*/
                     
);
?>

Heeft iemand een idee waar de fout zou kunnen zitten? of is er bekend mee en weet er een work around/oplossing voor?
papernotewoensdag 26 juni 2013 @ 20:55
Waarom staat je CURLOPT_DNS_CACHE_TIMEOUT zo kort? En draait je script op dezelfde computer als je browser? Zoeken ze de host op via dezelfde DNS server?
Chandlerwoensdag 26 juni 2013 @ 21:16
Ik draai alles op het zelfde systeem (mijn test omgeving laptop) en heb nergens een DNS adres ingesteld whatsoever...

De timeout staat zo kort omdat deze dan toch al wel gevonden moet zijn? lijkt mij? :D maar zal hem eens verhogen en kijken of dat een verschil maakt..
papernotewoensdag 26 juni 2013 @ 21:56
quote:
0s.gif Op woensdag 26 juni 2013 21:16 schreef Chandler het volgende:
Ik draai alles op het zelfde systeem (mijn test omgeving laptop) en heb nergens een DNS adres ingesteld whatsoever...

De timeout staat zo kort omdat deze dan toch al wel gevonden moet zijn? lijkt mij? :D maar zal hem eens verhogen en kijken of dat een verschil maakt..
Het is de duur waarmee items in de DNS cache van cURL worden bewaard. Jij kiepert nu elke twee seconden je DNS cache leeg, waardoor je URLs heel vaak moet resolven. Als je vaak dezelfde host benaderd, dan is het wel handig om je cache langer gevult te laten.

Het is dus géén timeout die bepaalt hoe lang cURL staat te wachten op een request.
Chandlerwoensdag 26 juni 2013 @ 22:00
Het voorbeeld is dat ook niet helemaal juist, want zowel met deze opties als zonder (of op welke waarde dan ook) blijven de fouten zich voordoen. Ik had deze DNS opties als test toegevoegd, maar zonder resultaat....

Dus snap ik nog steeds niet (lijkt mij dus dat DNS van de brouwser het zelfde is als die php gebruikt) waarom hij ze niet pakt? beetje vervelend...
papernotewoensdag 26 juni 2013 @ 22:04
Doe de URLs eens stuk-voor-stuk en kijk bij welke hij vastloopt.
zoemwoensdag 26 juni 2013 @ 22:23
Alleen de curl opts zegt niet zo heel veel; het kan ook op een ander punt fout gaan (wat ik vermoed). Wat voer je verder nog uit met curl?
slacker_nlwoensdag 26 juni 2013 @ 23:54
quote:
0s.gif Op woensdag 26 juni 2013 20:29 schreef Chandler het volgende:
Ik loop tegen iets in CURL aan, voor vele URLS krijg ik een goede status terug van CURL maar sommige een foutmelding, deze foutmelding is vaak Could not resolve host: (nil); Host not found terwijl als ik met de browser naar deze url ga, bestaat deze wel!? en laad erg snel.

Mijn scriptje draait 25 URLS tegelijk met een timeout van 10 seconden.. Dus nu vraag ik mij af?! waar ligt dit aan? mijn opts zijn als volgt;
[ code verwijderd ]

Heeft iemand een idee waar de fout zou kunnen zitten? of is er bekend mee en weet er een work around/oplossing voor?
Je wilt die DNS CACHE behouden, je zou eventueel als je echt lowlevel wilt gaan doen eerst resolven en dan pas aan CURL geven.

http://www.php.net/manual/en/function.dns-get-record.php

En dan wil je op A, CNAME en AAAA records zoeken en CNAME's moet je weer doorresolven tot je uitkomt op een A/AAAA record.

Of deze: http://www.php.net/manual/en/function.checkdnsrr.php
Boze_Appeldonderdag 27 juni 2013 @ 00:47
quote:
0s.gif Op woensdag 26 juni 2013 14:39 schreef mstx het volgende:
Yes.
Indexes erbij maken op type en isactive. Daar doe je de selecties op.
Chandlerdonderdag 27 juni 2013 @ 07:00
Ik voer verder niets specifieks uit met curl, ik gebruik dezelfde opzet als die eerder door Slacker_nl is gegeven (DIG / [PHP/(My)SQL] voor dummies #109)

En het uitlezen van de DNS per URL zou een mogelijkheid zijn, al zou CURL deze url natuurlijk ook gewoon moeten kunnen vinden :{
Lightdonderdag 27 juni 2013 @ 07:16
quote:
0s.gif Op woensdag 26 juni 2013 11:30 schreef mstx het volgende:
Ik heb zelf ook een vraagje, deze (simpele) query is soms traag:
[ code verwijderd ]

De explain zegt dit:
[ code verwijderd ]

Kan dat sneller?
Ik zou hier in Inner Join gebruiken ipv een Left Join. Je zoekt expliciet naar rijen waar TabelB.KolomY een waarde heeft, dus voegt het gebruik van een left join niets toe.
mstxdonderdag 27 juni 2013 @ 08:04
quote:
14s.gif Op donderdag 27 juni 2013 00:47 schreef Boze_Appel het volgende:

[..]

Indexes erbij maken op type en isactive. Daar doe je de selecties op.
Die indexes zitten er al op.

quote:
0s.gif Op donderdag 27 juni 2013 07:16 schreef Light het volgende:

[..]

Ik zou hier in Inner Join gebruiken ipv een Left Join. Je zoekt expliciet naar rijen waar TabelB.KolomY een waarde heeft, dus voegt het gebruik van een left join niets toe.
Maar dan selecteert 'ie toch ook rijen uit tabel B die niet gekoppeld zijn aan een rij uit tabel A?

Nog wat dingen geprobeerd maar het probleem zit hem echt in de COUNT() i.c.m. JOIN.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
SELECT COUNT(*) FROM TabelA
= 0.0002 sec

SELECT COUNT(*) FROM TabelA LEFT JOIN TabelB.................
= 0.25 sec

SELECT COUNT(*) FROM TabelA INNER JOIN TabelB.................
= 0.4 sec

SELECT * FROM TabelA LEFT JOIN TabelB.................
= 0.001 sec

SELECT * FROM TabelA INNER JOIN TabelB.................
= 0.001 sec

SELECT * FROM TabelA
= 0.0004 sec

Ik denk dat ik maar gewoon de kolom van TabelB die ik in de WHERE gebruik kopieer naar TabelA zodat ik niet hoef te joinen.
Lightdonderdag 27 juni 2013 @ 08:09
quote:
11s.gif Op donderdag 27 juni 2013 08:04 schreef mstx het volgende:

Maar dan selecteert 'ie toch ook rijen uit tabel B die niet gekoppeld zijn aan een rij uit tabel A?
Nee.
Bij een left join selecteer je alle rijen uit A en als er geen match in B gevonden kan worden (op basis van de ON clause) dan worden alle velden van B voor die rij gevuld met NULL.
Bij een inner join selecteer je alleen die rijen uit A waarvoor een match in B gevonden kan worden (op basis van de ON clause).
mstxdonderdag 27 juni 2013 @ 08:22
Ho ik zat even niet op te letten, je hebt gelijk. :P
slacker_nldonderdag 27 juni 2013 @ 08:31
quote:
0s.gif Op donderdag 27 juni 2013 07:00 schreef Chandler het volgende:
Ik voer verder niets specifieks uit met curl, ik gebruik dezelfde opzet als die eerder door Slacker_nl is gegeven (DIG / [PHP/(My)SQL] voor dummies #109)

En het uitlezen van de DNS per URL zou een mogelijkheid zijn, al zou CURL deze url natuurlijk ook gewoon moeten kunnen vinden :{
Mijn code is altijd bugfree :P
Cue_donderdag 27 juni 2013 @ 08:33
Mensen hier ervaring/voorbeelden van een soap call naar een webservice met PL/SQL?
Chandlerdonderdag 27 juni 2013 @ 10:13
quote:
10s.gif Op donderdag 27 juni 2013 08:31 schreef slacker_nl het volgende:

[..]

Mijn code is altijd bugfree :P
juist haha

maar goed, blijkbaar doe ik iets verkeerd!? ik ga nu eens kijken hoe anderen het doen...
mstxdonderdag 27 juni 2013 @ 13:39
Ik kwam net weer eens een prachtige query tegen van een oud-collega:
1
2
3
4
5
6
7
8
9
10
11
12
13
SELECT 
 kolommen
FROM
 tabel 
WHERE 
 id IN (
          SELECT 
            id 
          FROM
            tabel 
          WHERE 
           voorwaarde=1
         )
_O_ (het is dezelfde tabel)
Chandlerdonderdag 27 juni 2013 @ 13:41
Prachtig! zo leer je sub selects :+
Crutchdonderdag 27 juni 2013 @ 16:00
Hallo! Wat vinden jullie van Symfony?
raptorixdonderdag 27 juni 2013 @ 17:45
quote:
0s.gif Op donderdag 27 juni 2013 13:39 schreef mstx het volgende:
Ik kwam net weer eens een prachtige query tegen van een oud-collega:
[ code verwijderd ]

_O_ (het is dezelfde tabel)
Als het nou op een ander veld was het helemaal niet zo gek geweest, voorbeeld is een werknemerstabel waarbij er een veld leidinggevende is welke correspondeerd met het werknemerId.
Pakspulzondag 30 juni 2013 @ 15:29
Ik wil temperatuur in een Mysql database opslaan, maar zit even te twijfelen wat ik het beste kan gebruiken. Float, Double, Decimal of Real?

Mijn eerste keuze zou een float zijn, maar ik weet dat als je geld opslaat in een DB dat je Decimal moet gebruiken, aangezien temperatuur aardig op geld lijkt (ook twee cijfers achter de komma [in ieder geval hoe ik het aangeleverd krijg]). Zou ik zeggen Decimal is een veilig keuze, maar ik ga niet rekenen met deze cijfers, dus Float zou volgens mij ook wel kunnen.

Kan iemand de beste keuze kunnen uitleggen en wat standaarden hiervoor zijn?
Boze_Appelzondag 30 juni 2013 @ 15:42
quote:
0s.gif Op zondag 30 juni 2013 15:29 schreef Pakspul het volgende:
Ik wil temperatuur in een Mysql database opslaan, maar zit even te twijfelen wat ik het beste kan gebruiken. Float, Double, Decimal of Real?

Mijn eerste keuze zou een float zijn, maar ik weet dat als je geld opslaat in een DB dat je Decimal moet gebruiken, aangezien temperatuur aardig op geld lijkt (ook twee cijfers achter de komma [in ieder geval hoe ik het aangeleverd krijg]). Zou ik zeggen Decimal is een veilig keuze, maar ik ga niet rekenen met deze cijfers, dus Float zou volgens mij ook wel kunnen.

Kan iemand de beste keuze kunnen uitleggen en wat standaarden hiervoor zijn?
Als je er niet mee gaat rekenen, waarom sla je ze dan op?

Anyway, gewoon een decimal (4,1) gebruiken. Tenzij je dik dure apparatuur hebt is temperatuur opslaan met twee decimalen vrij onzinnig.
Pakspulzondag 30 juni 2013 @ 17:04
quote:
7s.gif Op zondag 30 juni 2013 15:42 schreef Boze_Appel het volgende:

[..]

Als je er niet mee gaat rekenen, waarom sla je ze dan op?
Niet mee rekenen in de zin van ik ga geen percentages er over heen gooien om daarna totalen te gaan berekenen. Meer datamining, zodat ik later kan kijken of ik ze kan gebruiken om beslissingen op te maken.
quote:
Anyway, gewoon een decimal (4,1) gebruiken. Tenzij je dik dure apparatuur hebt is temperatuur opslaan met twee decimalen vrij onzinnig.
Arduino zit er achter, vet dure apparatuur dus :P
Lightzondag 30 juni 2013 @ 23:33
quote:
7s.gif Op zondag 30 juni 2013 15:42 schreef Boze_Appel het volgende:

[..]

Als je er niet mee gaat rekenen, waarom sla je ze dan op?

Anyway, gewoon een decimal (4,1) gebruiken. Tenzij je dik dure apparatuur hebt is temperatuur opslaan met twee decimalen vrij onzinnig.
Als je twee decimalen aangeleverd krijgt, waarom zou je er dan maar 1 opslaan?
Boze_Appelzondag 30 juni 2013 @ 23:38
quote:
0s.gif Op zondag 30 juni 2013 23:33 schreef Light het volgende:

[..]

Als je twee decimalen aangeleverd krijgt, waarom zou je er dan maar 1 opslaan?
Kan opzich natuurlijk wel, maar het is een beetje als een rondje hardlopen op de cm nauwkeurig opslaan. Het gaat om gemeten temperatuur door een apparaat van nog geen tientje. Ik denk dat je al blij moet zijn als dat ding hele graden nauwkeurig doet, laat staan honderdste graden.

Ik ben van mening dat je data op basis van relevantie en toepasbaarheid op moet slaan en niet data moet bewaren 'omdat het kan'.
KomtTijd...zondag 30 juni 2013 @ 23:38
Gebruik gewoon een int en sla de temp. in honderdste graden celcius op.
Lightmaandag 1 juli 2013 @ 00:09
quote:
7s.gif Op zondag 30 juni 2013 23:38 schreef Boze_Appel het volgende:

[..]

Kan opzich natuurlijk wel, maar het is een beetje als een rondje hardlopen op de cm nauwkeurig opslaan. Het gaat om gemeten temperatuur door een apparaat van nog geen tientje. Ik denk dat je al blij moet zijn als dat ding hele graden nauwkeurig doet, laat staan honderdste graden.

Ik ben van mening dat je data op basis van relevantie en toepasbaarheid op moet slaan en niet data moet bewaren 'omdat het kan'.
quote:
7s.gif Op zondag 30 juni 2013 23:38 schreef Boze_Appel het volgende:

[..]

Kan opzich natuurlijk wel, maar het is een beetje als een rondje hardlopen op de cm nauwkeurig opslaan. Het gaat om gemeten temperatuur door een apparaat van nog geen tientje. Ik denk dat je al blij moet zijn als dat ding hele graden nauwkeurig doet, laat staan honderdste graden.

Ik ben van mening dat je data op basis van relevantie en toepasbaarheid op moet slaan en niet data moet bewaren 'omdat het kan'.
Dat ligt er m.i. ook aan wat je meet. Kamertemperatuur in honderdste graden is niet echt zinnig maar bij een experiment kan die nauwkeurigheid wel nuttig zijn.
Boze_Appelmaandag 1 juli 2013 @ 00:25
quote:
0s.gif Op maandag 1 juli 2013 00:09 schreef Light het volgende:

Dat ligt er m.i. ook aan wat je meet. Kamertemperatuur in honderdste graden is niet echt zinnig maar bij een experiment kan die nauwkeurigheid wel nuttig zijn.
Eens, maar als er al aangegeven wordt er niet mee te willen rekenen kan je 'experiment' meteen wel uitsluiten. ;)
randomomaandag 1 juli 2013 @ 01:48
tvp, ben bezig met een site voor mn pa, dus ik ga jullie waarschijnlijk nog wel lastig vallen :)
Chandlerwoensdag 3 juli 2013 @ 10:33
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 seconden

:{ raar, kan iemand mij uitleggen waarom dit zo langzaam gaat? :@
Juicyhilwoensdag 3 juli 2013 @ 10:37
quote:
5s.gif 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 seconden

:{ raar, kan iemand mij uitleggen waarom dit zo langzaam gaat? :@
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.
Chandlerwoensdag 3 juli 2013 @ 10:39
het hele document zit in het geheugen! :) dus dat is het probleem niet...

Sterker nog, het document wordt geladen in het geheugen vanaf een andere server (curl) en daarna pas door een foreach loopje bewerkt.

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>';
?>


[ Bericht 41% gewijzigd door Chandler op 03-07-2013 10:46:37 ]
Sitethiefwoensdag 3 juli 2013 @ 11:34
quote:
5s.gif 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 seconden

:{ raar, kan iemand mij uitleggen waarom dit zo langzaam gaat? :@
Some people, when confronted with a problem, think
“I know, I'll use regular expressions.” Now they have two problems.
slacker_nlwoensdag 3 juli 2013 @ 11:37
quote:
0s.gif 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.
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.
Chandlerwoensdag 3 juli 2013 @ 11:41
Dat doe ik dus nu, plus ik voeg 500 bytes extra toe om niets te missen... :D
zoemwoensdag 3 juli 2013 @ 11:50
quote:
5s.gif Op woensdag 3 juli 2013 10:33 schreef Chandler het volgende:
:{ raar, kan iemand mij uitleggen waarom dit zo langzaam gaat? :@
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?
Chandlerwoensdag 3 juli 2013 @ 12:00
"/[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...
zoemwoensdag 3 juli 2013 @ 12:15
Aha, de bekende email-regex :P

Ik zie een aantal nested quantifiers, wellicht is dit interessant leesvoer: Catastrophic backtracking.

Ik heb nu helaas niet de tijd om deze regex te optimaliseren, maar misschien wel een tip: probeer niet alles in een regex te vrotten. Je kunt ook ruwweg alle strings lijkende op emailadressen eruit halen en daarna de $matches array loopen voor een nadere validatiestap. Dus trek de filterstap en validatiestap wat uit elkaar.
slacker_nlwoensdag 3 juli 2013 @ 13:02
quote:
0s.gif 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...
Alles achter de @ kan je hiertegen aangooien:

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;
    };   
}

Je mag het zelf verphp'en. Dan kan je vervolgens alles voor de @ ook nog eens goed parsen en dan ben je klaar.
zoemwoensdag 3 juli 2013 @ 13:54
En voor je het weet heb je zoiets: http://www.perlmonks.org/?node_id=393809 :X

Ik zou het lekker simpel houden. Als het even kan zou ik filter_var() (php >= 5.2.0) erbij betrekken voor de validatie.
wipes66woensdag 3 juli 2013 @ 15:12
quote:
12s.gif 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 :X

Ik zou het lekker simpel houden. Als het even kan zou ik filter_var() (php >= 5.2.0) erbij betrekken voor de validatie.
:D

filter_var gebruikt trouwens intern ook een enorme regex :P
Sitethiefmaandag 8 juli 2013 @ 09:23
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;
    }
?>

Ik wil deze functie gebruiken om dynamisch bepaalde waardes in een array met objecten te vergelijken. Het probleem is dat ik meerdere type data wil kunnen vergelijken die op meerdere plekken in het object zitten. Weet iemand of het mogelijk is om, met bijvoorbeeld eval, deze op een makkelijke manier dynamisch aan te maken? Anders moet ik die foreach in iedere case stoppen en dat vind ik toch niet een goede, beheersbare oplossing. Maar eval zelf is ook niet zo heel erg tof.

Wat ik tot nu toe kon vinden is dit alleen maar mogelijk bij statisch properties.
Chandlerdonderdag 11 juli 2013 @ 23:42
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!?

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

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
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 ;

Iemand een idee? oh ik heb maar 17m regeltjes....
zoemdonderdag 11 juli 2013 @ 23:46
Wat zegt EXPLAIN?
Purplesparksdonderdag 11 juli 2013 @ 23:49
quote:
0s.gif 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....
Natuurlijk niet het antwoord wat je zoekt. Maar je kan het via een omweg ook gewoon orderen binnen php lijkt me.
Juicyhildonderdag 11 juli 2013 @ 23:51
quote:
0s.gif 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.
Dat gaat je geheugen kosten _O-
Purplesparksdonderdag 11 juli 2013 @ 23:52
quote:
0s.gif Op donderdag 11 juli 2013 23:51 schreef Juicyhil het volgende:

[..]

Dat gaat je geheugen kosten _O-
True dat, maar een potentiële mogelijkheid als chandler niet de oplossing weet te vinden van de lange order tijd.
Juicyhildonderdag 11 juli 2013 @ 23:54
quote:
0s.gif 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....
Neem anders eens failed op in je where-clause. Dan hoeft hij in wat minder rijen te sorteren.
Edit: oh never mind, niet goed gelezen :P
zoemvrijdag 12 juli 2013 @ 00:02
quote:
0s.gif Op donderdag 11 juli 2013 23:51 schreef Juicyhil het volgende:

[..]

Dat gaat je geheugen kosten _O-
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.

[ Bericht 0% gewijzigd door zoem op 12-07-2013 00:48:54 ]
Chandlervrijdag 12 juli 2013 @ 11:35
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

[ Bericht 9% gewijzigd door Chandler op 12-07-2013 11:41:09 ]
Purplesparksvrijdag 12 juli 2013 @ 11:38
quote:
0s.gif 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 :@
Gaat het ook zo traag wanneer je order by gebruikt in andere tabellen of alleen in deze?
Chandlervrijdag 12 juli 2013 @ 11:40
quote:
0s.gif 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?
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....
Purplesparksvrijdag 12 juli 2013 @ 11:43
quote:
15s.gif 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....
Okee, wilde alleen uitsluiten dat het om de 1 of andere vage reden niet aan je sql prog zelf lag.

Test je het trouwens lokaal allemaal?

[ Bericht 3% gewijzigd door Purplesparks op 12-07-2013 11:49:14 ]
slacker_nlvrijdag 12 juli 2013 @ 13:04
Hoe test je het eigenlijk, ben je de query via php aan het doen of die je het in een sql prompt?
Chandlervrijdag 12 juli 2013 @ 13:11
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! ;)
Purplesparksvrijdag 12 juli 2013 @ 13:55
quote:
14s.gif 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! ;)
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.
zoemvrijdag 12 juli 2013 @ 14:00
quote:
0s.gif 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
En wat doet een index op je WHERE clause én ORDER BY field(s)?

MySQL Performance Blog: ORDER BY … LIMIT Performance Optimization
MySQL Reference Manual: ORDER BY Optimization
Chandlerzaterdag 13 juli 2013 @ 16:19
Ik heb het doorgelezen en ga het nog eens doorlezen want ben niet echt heel veel wijzer geworden dan dat ik al was :+ maar goed, in mijn geval zal ik het ws 3x moeten lezen :X
slacker_nlmaandag 15 juli 2013 @ 11:29
FF crossposten: http://nedbatchelder.com/text/unipain.html
Darkomendonderdag 18 juli 2013 @ 19:57
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]
slacker_nldonderdag 18 juli 2013 @ 20:35
quote:
0s.gif 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]
Dat zou in 1 go moeten kunnen.

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. 
Darkomendonderdag 18 juli 2013 @ 22:15
Leverde een infinite redirect op. :P
wobbelwoensdag 24 juli 2013 @ 15:42
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.
Juicyhilwoensdag 24 juli 2013 @ 15:55
quote:
0s.gif 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.
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 clients
Juicyhilwoensdag 24 juli 2013 @ 15:56
Oh wacht even, dat is een andere. Ik gebruikte deze: http://code.google.com/p/phpwebsocket/
wobbelwoensdag 24 juli 2013 @ 16:00
quote:
0s.gif 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/
Maar daar vind ik ook niks in de documentatie hoe ik dat zou moeten doen.
Juicyhilwoensdag 24 juli 2013 @ 16:01
http://www.flynsarmy.com/(...)hat-application-2-0/
wobbelwoensdag 24 juli 2013 @ 16:02
quote:
Die had ik ook al gegoogled :+ eens kijken hoe ze dat gefixsnorred hebben
urselwoensdag 24 juli 2013 @ 16:04
ZeroMQ al bekeken?
Niek56woensdag 7 augustus 2013 @ 17:24
Juicyhil

voor dummies!!
Het woord dummies alleen al zegt genoeg.
Ik was of liever gezegd ik ben zo'n dummie , op de eerste plaats door me de PHP en MySQL bijbel te laten aanpraten een boek dat je niet ff op je schoot legt op er wat mee op te zoeken als je aan het scripten bent, en op de tweede plaats door PHP & MySQL voor DUMMIES te kopen via internet, want die redacteur die dat geschreven heeft moet toch wel erg kleurendoof euh blind geweest zijn
die voorbeelden die daar in staan kan men niet eens lezen zonder vergrootglas, had die idioot geen nou witte letters kunnen gebruiken.
PS.
ik zie nu dat de maker van deze site de zelfde problemen heeft met blauw op zwart en grijs op zwart in die inlog balk, ook als eens aan bezoekers met slechten ogen gedacht

[ Bericht 13% gewijzigd door Niek56 op 07-08-2013 17:30:22 ]
wobbelvrijdag 9 augustus 2013 @ 09:39
Wat is de minst smerige methode om onderstaande code om te zetten naar een array?

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

Deze pruttel krijg ik plain text als output ergens uit, dus dat kan ik helaas niet aanpassen. De eerste regels mogen genegeerd worden, dat kan ik zelf wel fixen.
mstxvrijdag 9 augustus 2013 @ 09:44
Zoiets?

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));
    }
?>
(niet getest)
wobbelvrijdag 9 augustus 2013 @ 09:46
quote:
0s.gif Op vrijdag 9 augustus 2013 09:44 schreef mstx het volgende:
Zoiets?
[ code verwijderd ]

(niet getest)
Exploden op een spatie wordt hem niet, aangezien alle whitespaces uit spaties bestaan (erg lastig, je krijgt dan een array met 100 dingen haha)

Ik heb nu het volgende:

1
2
3
<?php
$bier 
preg_split('/\s+/'"      10.0.0.17 55722        56810   74.125.136.18   443    WAN2");
?>

Alleen het eerste resultaat in de array is leeg :o
wobbelvrijdag 9 augustus 2013 @ 09:48
ah, met array_filter lossen we dat weer op :+ ik heb 't zelf al opgelost :')
Arceevrijdag 9 augustus 2013 @ 09:48
quote:
0s.gif 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)
Dan vervang je eerst in een loopje alle dubbele spaties door een enkele zodat je uiteindelijk maar 1 spatie overhoudt.
mstxvrijdag 9 augustus 2013 @ 09:50
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>$data[] = array_map("trim"explode(" "trim($regel)));
    }
?>

Resultaat:
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
        )

)
Tijnvrijdag 9 augustus 2013 @ 09:50
quote:
0s.gif 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)
Je zou daarna door de array kunnen gaan en alles wat geen spatie is gebruiken toch?

Anders kun je ook eerst dubbele spaties weghalen met zoiets:

1
2
3
<?php
preg_replace
('/(\s)+/'' '$string);
?>

Daarna kun je wel op spatie exploden.
wobbelvrijdag 9 augustus 2013 @ 10:00
quote:
0s.gif Op vrijdag 9 augustus 2013 09:50 schreef mstx het volgende:

[ code verwijderd ]

Resultaat:
[ code verwijderd ]

Ik heb het op deze manier gedaan:

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 )
    {
        
        
$nat_array[] = array_filter preg_split('/\s+/'$regel ) );
                
    }
    
    
    
$count++;
    
}
echo 
"<pre>";
print_r $nat_array );
echo 
"</pre>";
?>

Output is als volgt:

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
        )

)

Nu wil ik alleen nog de mogelijkheid om dubbelen [3] waardes te achterhalen...ik wil netjes alles weer per regel outputten, en als er dubbele [3] regels zijn deze vet maken maken.

voorbeeldje:

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 57174 54.230.8.197 80 WAN2
10.0.0.17 55688 56776 108.160.163.42 80 WAN2
10.0.0.17 55722 56810 74.125.136.18 443 WAN2

Eens zoeken hoe dat moet met multidimensionale arrays

[ Bericht 22% gewijzigd door wobbel op 09-08-2013 10:08:30 ]
wobbelvrijdag 9 augustus 2013 @ 10:47
Gelukt met deze beunhaas oplossing

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 )
    {
        
        
$nat_array[$count] = array_filter preg_split('/\s+/'$regel6PREG_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]] > )
    {
        
        echo 
"Dubbel: Jep!<br /><br />";
        
    }
    else
    {
        
        echo 
"Dubbel: nee<br /><br />";

    }

}
?>
WyriHaximuszondag 11 augustus 2013 @ 11:27
quote:
0s.gif 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.
Al eens naar Ratchet gekeken? http://socketo.me/ En idd ook 0MQ zoals ursel al zegt.
fyahdinsdag 13 augustus 2013 @ 22:49
error handling 101 :')

UfiCuXC.png
Skunk-mwoensdag 14 augustus 2013 @ 16:31
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..
Juicyhilwoensdag 14 augustus 2013 @ 16:38
quote:
0s.gif Op dinsdag 13 augustus 2013 22:49 schreef fyah het volgende:
error handling 101 :')

[ afbeelding ]
Mijn exceptions zijn altijd iets in de zin van 'Er is iets misgegaan' :@
Crutchwoensdag 14 augustus 2013 @ 18:33
quote:
0s.gif 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..
Nah, zoekt zo moeilijk
zoemwoensdag 14 augustus 2013 @ 19:45
quote:
0s.gif 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 is :)

Wat ik me wel voor kan stellen is dat items als afbeeldingen apart op de schijf worden geplaatst.
Boze_Appelwoensdag 14 augustus 2013 @ 21:12
quote:
0s.gif Op dinsdag 13 augustus 2013 22:49 schreef fyah het volgende:
error handling 101 :')

[ afbeelding ]
Altijd leuk, wazige foutmeldingen of boos commentaar in code.
Skunk-mdonderdag 15 augustus 2013 @ 01:03
quote:
0s.gif 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.
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...

Maar het is wel beter voor prestaties om de tekst inhoud in een aparte tabel te zetten bij forum of niet..?
zoemdonderdag 15 augustus 2013 @ 18:01
quote:
0s.gif 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..?
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?
Pino112donderdag 15 augustus 2013 @ 18:07
quote:
0s.gif Op dinsdag 13 augustus 2013 22:49 schreef fyah het volgende:
error handling 101 :')

[ afbeelding ]
:D
Darkomenvrijdag 16 augustus 2013 @ 14:28
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.
Skunk-mzaterdag 17 augustus 2013 @ 01:30
quote:
0s.gif 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?
Ik bedoel dat wat ze daar de body noemen in een aparte tabel komt..

bij kunena (een joomla forum) bijvoorbeeld hebben ze een tabel messages met de volgende velden (staan zowel topics als reacties in)
id
parent
thread
catid
name
userid
email
subject
time
ip
topic_emoticon
locked
hold
ordering
hits
moved
modified_by
modified_time
modified_reason

En messages_text met
messid
message

Neem aan dat dat sneller is voor index pagina enzo waar je de inhoud van de post niet nodig hebt..?
Misschien ook wel bij het zoeken naar de posts bij het topic dat geladen word..?

[ Bericht 2% gewijzigd door Skunk-m op 17-08-2013 01:38:01 ]
KomtTijd...zaterdag 17 augustus 2013 @ 12:06
lijkt me weinig boeiend als je gewoon goeie indexes hebt.
Darkomenwoensdag 21 augustus 2013 @ 11:51
quote:
0s.gif 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.
Ok Ming de deur uit, image2mpeg gebruikt, werk goed!

Toch jammer dat niemand ervaring lijkt te hebben met MING...
pascal08woensdag 4 september 2013 @ 20:46
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:
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 | ...  |
|      ... |   ...  | ...  | ...   | ...  | ...  |
+----------+--------+------+-------+------+------+

Table 2:
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 | ... |  .. |
| ...  |  | ...   | ...        | ... | ... |
+------+--+-------+------------+-----+-----+

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?
slacker_nlwoensdag 4 september 2013 @ 20:53
quote:
0s.gif 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?
id1, id2 en id3 zijn obfuscated namen of...? Kunnen die id's in al die kolommen terug te vinden zijn?
pascal08woensdag 4 september 2013 @ 20:58
quote:
0s.gif 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?
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.

SPOILER
Table 1:
4j34E.png

Table 2:
4j31V.png


[ Bericht 8% gewijzigd door pascal08 op 04-09-2013 21:03:51 ]
mstxwoensdag 4 september 2013 @ 21:08
quote:
0s.gif 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.

SPOILER
Table 1:
[ afbeelding ]

Table 2:
[ afbeelding ]
Welke aap heeft dat bedacht?
* mstx mompelt iets over een koppeltabel
pascal08woensdag 4 september 2013 @ 21:09
quote:
0s.gif Op woensdag 4 september 2013 21:08 schreef mstx het volgende:

[..]

Welke aap heeft dat bedacht?
* mstx mompelt iets over een koppeltabel
Geef eens een voorbeeldje. :@ :D
mstxwoensdag 4 september 2013 @ 21:11
quote:
0s.gif Op woensdag 4 september 2013 21:09 schreef pascal08 het volgende:

[..]

Geef eens een voorbeeldje. :@ :D
Extra tabel met 2 kolommen: squad_id | player_id
Voor elke player die aan een squad gekoppeld is 1 rij.
pascal08woensdag 4 september 2013 @ 21:14
quote:
0s.gif Op woensdag 4 september 2013 21:11 schreef mstx het volgende:

[..]

Extra tabel met 2 kolommen: squad_id | player_id
Voor elke player die aan een squad gekoppeld is 1 rij.
Ik snap 'm. Dat is dus efficiënter dan dit volgens jou? Ik kan me in ieder geval voorstellen dat de queries een stuk makkelijker worden. :)
mstxwoensdag 4 september 2013 @ 21:18
quote:
0s.gif Op woensdag 4 september 2013 21:14 schreef pascal08 het volgende:

[..]

Ik snap 'm. Dat is dus efficiënter dan dit volgens jou?
Ja, want:
- Oneindig aantal players zonder de tabel aan te hoeven passen
- Geen onnodig lege kolommen
- Makkelijk kunnen aangeven dat een relatie uniek moet zijn
- Met 1 simpele query alle players van een squad kunnen ophalen

Leesvoer: http://nl.wikipedia.org/wiki/Databasenormalisatie http://www.tekstenuitleg.(...)en/veel-op-veel.html
slacker_nlwoensdag 4 september 2013 @ 21:36
OMG... ja, nou, het kan allemaal, maar het is kut met peren zoals het nu is. Back to the drawing board.

Anders was het gewoon een simpele join, nu is het <moederneukend> dramatisch.
Skunk-mwoensdag 4 september 2013 @ 22:15
Ik heb zelf een shoutbox geschreven.. die werkt volledig los van phpbb (op stukje wat nodig om de gebruikersnaam te checken na) gewoon goed.. maar die moet verwerkt worden op een plek in phpbb

maar ik heb geen flauw idee hoe dat allemaal in elkaar zit het bestand in het template waar ik em moet hebben is een html bestand..

Weet iemand hoe ik iets daartussen krijg?
pascal08woensdag 4 september 2013 @ 22:47
quote:
0s.gif Op woensdag 4 september 2013 21:18 schreef mstx het volgende:

[..]

Ja, want:
- Oneindig aantal players zonder de tabel aan te hoeven passen
- Geen onnodig lege kolommen
- Makkelijk kunnen aangeven dat een relatie uniek moet zijn
- Met 1 simpele query alle players van een squad kunnen ophalen

Leesvoer: http://nl.wikipedia.org/wiki/Databasenormalisatie http://www.tekstenuitleg.(...)en/veel-op-veel.html
Bedankt, dit is echt een nuttige post. Ik google zelf heel graag, maar soms is het lastig om de juiste info te vinden als je niet weet waarvoor je moet zoeken. Thanks dus. ;) ^O^
Skunk-mdonderdag 5 september 2013 @ 15:28
Weet niet of dit de juist plek is om het te vragen (waarschijnlijk niet, maar toch) maar hoe kun je in phpbb voor elkaar krijgen dat de topics uit subcategorien door elkaar weergegeven worden in de hoofdcategorie.. dus eigenlijk hetzelfde als dat je hier in digital corner alle topics uit hardware, software etc. door elkaar hebt.??

De vraag die ik eerder stelde heb k al enigzins opgelost.. heb het php gedeelte in language/common.php gezet en aan de array toegevoegd en zo weer laten geven in de template.

EDIT: en nu ik toch een post heb gemaakt, weet er iemand toevallig een externe afbeelding host die gif ondersteunt?

[ Bericht 7% gewijzigd door Skunk-m op 05-09-2013 15:35:33 ]
Darkomendonderdag 5 september 2013 @ 17:10
Alles is mogelijk, of wil je precies weten hoe en waar?

Gifs kan je hosten op imgur.com.
pascal08zaterdag 7 september 2013 @ 11:02
quote:
0s.gif Op woensdag 4 september 2013 21:18 schreef mstx het volgende:

[..]

Ja, want:
- Oneindig aantal players zonder de tabel aan te hoeven passen
- Geen onnodig lege kolommen
- Makkelijk kunnen aangeven dat een relatie uniek moet zijn
- Met 1 simpele query alle players van een squad kunnen ophalen

Leesvoer: http://nl.wikipedia.org/wiki/Databasenormalisatie http://www.tekstenuitleg.(...)en/veel-op-veel.html
Ik heb m'n database veranderd. Nu heb ik 1 database met teams en 1 database met spelers. Ik heb alleen geen flauw idee hoe ik nu alleen teams selecteer met spelers met een bepaalde eigenschap.

Voorbeeldje:

1
2
3
4
5
6
7
+----------+---------------+
| Squad_ID |     Name      |
+----------+---------------+
|        1 | Goed team     |
|        2 | Slecht tiem   |
|        3 | Matig teampje |
+----------+---------------+

1
2
3
4
5
6
7
8
9
10
11
12
13
+----------+-----------+---------------+--+
| Squad_ID | Player_ID | Player_rating |  |
+----------+-----------+---------------+--+
|        1 |         5 |            50 |  |
|        1 |         8 |            40 |  |
|        1 |        24 |            60 |  |
|        2 |       548 |            70 |  |
|        2 |       687 |            70 |  |
|        3 |         5 |            80 |  |
|        3 |        70 |            40 |  |
|        3 |       940 |            40 |  |
|        3 |       486 |            50 |  |
+----------+-----------+---------------+--+

M'n query wordt dan:

1
2
3
SELECT *
FROM squads s
JOIN players_in_squads p ON s.squad_id = p.squad_id

...toch?

Hoe moet ik nu teams selecteren met spelers die allemaal een rating boven de 60 hebben?
boem-dikkiezaterdag 7 september 2013 @ 11:45
Gewoon met een WHERE achter je query?
Rockfirezaterdag 7 september 2013 @ 11:47
quote:
0s.gif Op zaterdag 7 september 2013 11:02 schreef pascal08 het volgende:

[..]

Ik heb m'n database veranderd. Nu heb ik 1 database met teams en 1 database met spelers. Ik heb alleen geen flauw idee hoe ik nu alleen teams selecteer met spelers met een bepaalde eigenschap.

Voorbeeldje:
[ code verwijderd ]

[ code verwijderd ]

M'n query wordt dan:
[ code verwijderd ]

...toch?

Hoe moet ik nu teams selecteren met spelers die allemaal een rating boven de 60 hebben?
1
2
3
4
SELECT *
FROM squads s
JOIN players_in_squads p ON s.squad_id = p.squad_id
WHERE p.Player_rating > 60
pascal08zaterdag 7 september 2013 @ 11:48
quote:
7s.gif Op zaterdag 7 september 2013 11:45 schreef boem-dikkie het volgende:
Gewoon met een WHERE achter je query?
1WHERE p.player_rating > 60

Dat levert alle teams met tenminste 1 speler met een rating boven de 60.

Nu wil ik alleen teams waarvan alle spelers een rating boven de 60 hebben. Ik ben zo slecht met SQL. ;(
pascal08zaterdag 7 september 2013 @ 12:50
quote:
0s.gif Op zaterdag 7 september 2013 11:48 schreef pascal08 het volgende:

[..]
[ code verwijderd ]

Dat levert alle teams met tenminste 1 speler met een rating boven de 60.

Nu wil ik alleen teams waarvan alle spelers een rating boven de 60 hebben. Ik ben zo slecht met SQL. ;(
SPOILER
Volgens mij kan ik m'n probleem terugbrengen tot het volgende:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
+----+-------+
| ID | Value |
+----+-------+
|  1 |     5 | 
|  1 |     2 |
|  1 |     8 |
|  2 |     3 |
|  2 |     4 |
|  3 |     4 |
|  3 |     8 |
|  3 |     6 |
|  3 |     1 |
|  3 |     5 |
+----+-------+

Wat ik dan nodig heb zijn de ID's waarvan de values allemaal groter zijn dan 2. Het resultaat wordt dan:

1
2
3
4
5
6
+----+-------+
| ID | Value |
+----+-------+
|  2 |     3 |
|  2 |     4 |
+----+-------+

Een voorbeeld fiddletje: http://sqlfiddle.com/#!2/481b7/9
EDIT: Ik heb de oplossing gevonden! *O*
http://sqlfiddle.com/#!2/481b7/17


[ Bericht 2% gewijzigd door pascal08 op 07-09-2013 13:26:21 ]
Apekoekzaterdag 7 september 2013 @ 14:00
Weet niet of dit de juiste locatie is om het te vragen maar wat betekent het wanneer jouw "initial connection" erg traag is? Wat kan ik daar aan doen? Heeft dat met de server of de website zelf te maken?
#ANONIEMzaterdag 7 september 2013 @ 14:33
Zou wel handig zijn om te weten wat voor connectie
Lightzaterdag 7 september 2013 @ 19:14
1
2
3
4
5
6
SELECT s.*
FROM squads s
LEFT JOIN players_in_squads ps
    ON ps.squad_id = s.squad_id
    AND ps.player_rating < 60
WHERE ps.squad_id IS NULL

Een team met alleen spelers met een rating van 60 of meer heeft geen enkele speler met een rating van minder dan 60.
Apekoekmaandag 9 september 2013 @ 10:41
quote:
0s.gif Op zaterdag 7 september 2013 14:33 schreef totalvamp het volgende:
Zou wel handig zijn om te weten wat voor connectie
Ik ben hier redelijk noob in, maar initial connection speed heeft te maken met het inladen van de eerste byte.

Gaat een VPS veel beter zijn dan shared hosting? Ik wil namelijk een vlotte site draaien gericht op het buitenland. Ik heb nu namelijk een aanbieding op het oog, maar 0,5ghz en 356mb ram oid. Is dat genoeg voor een blog die eventueel vaak bezocht zal gaan worden?

[ Bericht 9% gewijzigd door Apekoek op 09-09-2013 11:03:55 ]
rekenwondermaandag 9 september 2013 @ 11:12
quote:
1s.gif Op maandag 9 september 2013 10:41 schreef Apekoek het volgende:

[..]

Ik ben hier redelijk noob in, maar initial connection speed heeft te maken met het inladen van de eerste byte.
Eerste byte van wat? :s In welke context kwam je de term tegen?
zoemmaandag 9 september 2013 @ 11:19
quote:
1s.gif Op maandag 9 september 2013 10:41 schreef Apekoek het volgende:
Gaat een VPS veel beter zijn dan shared hosting? Ik wil namelijk een vlotte site draaien gericht op het buitenland. Ik heb nu namelijk een aanbieding op het oog, maar 0,5ghz en 356mb ram oid. Is dat genoeg voor een blog die eventueel vaak bezocht zal gaan worden?
Wat is veelbezocht? Ik vind de aangeboden specs eigenlijk erg karig. Voor nog geen 10E per maand kun je elders meer dan het dubbele huren.
Apekoekmaandag 9 september 2013 @ 12:15
quote:
0s.gif Op maandag 9 september 2013 11:19 schreef zoem het volgende:

[..]

Wat is veelbezocht? Ik vind de aangeboden specs eigenlijk erg karig. Voor nog geen 10E per maand kun je elders meer dan het dubbele huren.
Tussen de 200 en 400 bezoekers per dag.

Het is een website die voor een ander land is bedoelt. VPS server mogelijkheden zijn daar minder en dus duurder, vandaar. Echter is een Nederlandse VPS ook goed voor een site buiten NL gericht? Ik heb begrepen dat je dan alsnog in Google van het desbetreffende land minder goed rankt.
zoemmaandag 9 september 2013 @ 12:36
quote:
1s.gif Op maandag 9 september 2013 12:15 schreef Apekoek het volgende:

[..]

Tussen de 200 en 400 bezoekers per dag.

Het is een website die voor een ander land is bedoelt. VPS server mogelijkheden zijn daar minder en dus duurder, vandaar. Echter is een Nederlandse VPS ook goed voor een site buiten NL gericht? Ik heb begrepen dat je dan alsnog in Google van het desbetreffende land minder goed rankt.
Dat klopt, het kan ietwat schelen in ranking. De weging ervan is echter lang niet zo zwaar als het hebben van goede content. Er zijn Nederlandse hostingpartijen die geolocalisatie aanbieden; wie weet is dat een optie (bijv OVH)
Apekoekmaandag 9 september 2013 @ 12:41
quote:
0s.gif Op maandag 9 september 2013 12:36 schreef zoem het volgende:

[..]

Dat klopt, het kan ietwat schelen in ranking. De weging ervan is echter lang niet zo zwaar als het hebben van goede content. Er zijn Nederlandse hostingpartijen die geolocalisatie aanbieden; wie weet is dat een optie (bijv OVH)
Het land ligt niet in Europa, toch goed om hier even naar te kijken.
rekenwonderdinsdag 10 september 2013 @ 08:47
quote:
1s.gif Op maandag 9 september 2013 10:41 schreef Apekoek het volgende:

[..]

Ik ben hier redelijk noob in, maar initial connection speed heeft te maken met het inladen van de eerste byte.

Gaat een VPS veel beter zijn dan shared hosting? Ik wil namelijk een vlotte site draaien gericht op het buitenland. Ik heb nu namelijk een aanbieding op het oog, maar 0,5ghz en 356mb ram oid. Is dat genoeg voor een blog die eventueel vaak bezocht zal gaan worden?
Hangt ook samen met de blog-software. Sommige blog-software neem geen genoegen met 356 MB.
KomtTijd...dinsdag 10 september 2013 @ 12:33
Ik begin Symfony2 een beetje onder de knie te krijgen. Werkt wel geniaal zeg!
Rockfiredinsdag 10 september 2013 @ 12:46
quote:
17s.gif Op dinsdag 10 september 2013 12:33 schreef KomtTijd... het volgende:
Ik begin Symfony2 een beetje onder de knie te krijgen. Werkt wel geniaal zeg!
Ik hoop er binnenkort mee aan de slag te mogen voor een klant.
Crutchdinsdag 10 september 2013 @ 18:02
quote:
17s.gif Op dinsdag 10 september 2013 12:33 schreef KomtTijd... het volgende:
Ik begin Symfony2 een beetje onder de knie te krijgen. Werkt wel geniaal zeg!
Werkt erg fijn inderdaad.
Zowel Twig als Doctrine zijn ook erg handig.
Moest aan het begin nog wel even wennen aan de verschillende manieren om de zooi te configuren (yml,php annotation), maar heb nu wel mijn draai gevonden. Mijn werkgever laat mij een dezer maanden een Symfony-project doen, dus ben benieuwd.
KomtTijd...dinsdag 10 september 2013 @ 18:11
Ja idd, dat maakt het er niet altijd duidelijker van. Het is voor mij ook voor het eerst dat ik echt OO werk dus het is wel even wennen en een hoop leren, maar ik merk nu al hoe makkelijk het is om sommige dingen te bouwen.
Crutchdinsdag 10 september 2013 @ 18:24
quote:
14s.gif Op dinsdag 10 september 2013 18:11 schreef KomtTijd... het volgende:
Ja idd, dat maakt het er niet altijd duidelijker van. Het is voor mij ook voor het eerst dat ik echt OO werk dus het is wel even wennen en een hoop leren, maar ik merk nu al hoe makkelijk het is om sommige dingen te bouwen.
Ik ben erg OO-minded en ben daarom blij verrast met Doctrine.

Trouwens.. lessphp voor je css _O_ werkt ook gewoon.
http://isometriks.com/using-less-with-symfony2
Rockfiredinsdag 10 september 2013 @ 18:59
Doctrine heb ik een paar maand geleden voor het eerst gebruikt in combinatie met Zend Framework 2, inderdaad erg handig! Twig heb ik nog niet gebruikt, maar ga ik zeker ook eens uitproberen.
Maringodinsdag 10 september 2013 @ 19:04
quote:
17s.gif Op dinsdag 10 september 2013 12:33 schreef KomtTijd... het volgende:
Ik begin Symfony2 een beetje onder de knie te krijgen. Werkt wel geniaal zeg!
Ik ben er ook mee bezig icm Twig en Doctrine. Ideaal inderdaad. :Y
Crutchdinsdag 10 september 2013 @ 19:05
PHPStorm ondersteunt Symfony2 nu ook.

Volgens mij krijg je in een nieuwere versie zelfs een commandline interface. _O_
TwenteFCdinsdag 10 september 2013 @ 22:30
quote:
17s.gif Op dinsdag 10 september 2013 12:33 schreef KomtTijd... het volgende:
Ik begin Symfony2 een beetje onder de knie te krijgen. Werkt wel geniaal zeg!
_O_ Laravel. (Gebruikt ook Symfony2 componenten)
Apekoekwoensdag 11 september 2013 @ 06:54
quote:
0s.gif Op dinsdag 10 september 2013 08:47 schreef rekenwonder het volgende:

[..]

Hangt ook samen met de blog-software. Sommige blog-software neem geen genoegen met 356 MB.
Waar moet ik dan aan denken bij wordpress?
rekenwonderwoensdag 11 september 2013 @ 08:29
quote:
5s.gif Op woensdag 11 september 2013 06:54 schreef Apekoek het volgende:

[..]

Waar moet ik dan aan denken bij wordpress?
Dat is uiteraard van allerlei factoren afhankelijk zoals gebruikte plugins, aantal bezoekers etc.

356 MB lijkt me echter aan de krappe kant. Begin eens bij 1 GB.
KomtTijd...woensdag 11 september 2013 @ 09:24
quote:
0s.gif Op woensdag 11 september 2013 08:29 schreef rekenwonder het volgende:

[..]

Dat is uiteraard van allerlei factoren afhankelijk zoals gebruikte plugins, aantal bezoekers etc.

356 MB lijkt me echter aan de krappe kant. Begin eens bij 1 GB.
Lolwhut? Php memory limit staat normaliter op 64 MB, en als je dat daadwerkelijk haalt met php moet je toch eens flink achter je oren gaan krabben, want dat is best wel extreem.
rekenwonderwoensdag 11 september 2013 @ 16:56
Wat zou jouw advies zijn?
KomtTijd...woensdag 11 september 2013 @ 16:58
Voor een wordpressblog? gewoon shared hosting.
papernotewoensdag 11 september 2013 @ 17:00
quote:
0s.gif Op woensdag 11 september 2013 16:56 schreef rekenwonder het volgende:
Wat zou jouw advies zijn?
Wordpress geeft geen (althans, hier: http://wordpress.org/about/requirements/) vereisten aan het geheugengebruik. De standaard-instelling van PHP lijkt voldoende. Een paar MB moet ook genoeg zijn voor iets als Wordpress.

Mocht je overigens plugins, uitbreidingen of wat dan ook toevoegen aan de standaard Wordpress, dan kan het geheugengebruik toenemen. Dat is ook de reden waarom je zoveel "excessive PHP memory wordpress"-topics ziet.
Pakspulwoensdag 11 september 2013 @ 17:25
quote:
11s.gif Op woensdag 11 september 2013 09:24 schreef KomtTijd... het volgende:

[..]

Lolwhut? Php memory limit staat normaliter op 64 MB, en als je dat daadwerkelijk haalt met php moet je toch eens flink achter je oren gaan krabben, want dat is best wel extreem.
Zelfs een 64MB programma kan op een 32MB systeem draaien, alleen gaat je systeem dan wel swappen. Maar je moet kijken naar hoe vaak je site per seconde wordt aangeroepen. Performance loads uitvoeren om te kijken wat de resultaten zijn onder welke belasting. Ga je akkoord met 2 seconde laadtijd op piek tijden? Dat zijn vragen die waar je achter moet komen wat de echte laadtijden zijn en wat je acceptabel vindt.
Crutchzaterdag 14 september 2013 @ 13:08
Is Symfony een beetje te draaien op Shared Hosting? Iemand ervaring?
KomtTijd...zaterdag 14 september 2013 @ 20:27
Waarom niet?
Tijnzaterdag 14 september 2013 @ 21:11
Nou, ik ben van de week voor het eerst op een project gezet dat met Symfony 2 is gedaan en dat is een partij sloom, niet normaal. Ik hoop niet dat dit representatief is voor het framework :+
zoemzaterdag 14 september 2013 @ 21:12
Je moet ook een opcode cache gebruiken. Dat scheelt enorm.
zoemzaterdag 14 september 2013 @ 21:28
quote:
11s.gif Op woensdag 11 september 2013 09:24 schreef KomtTijd... het volgende:

[..]

Lolwhut? Php memory limit staat normaliter op 64 MB, en als je dat daadwerkelijk haalt met php moet je toch eens flink achter je oren gaan krabben, want dat is best wel extreem.
Ik denk dat je niet binnen het proces moet kijken, maar naar wat het per request kost aan geheugen. Dan kun je uitrekenen hoeveel requests je kan bedienen met het beschikbare geheugen. Stel dat je mod_php gebruikt dan ben je per apacheproces toch zeker zo'n 30MB kwijt. Dus bij ~12 concurrent requests zit het geheugen al vol. En dan reken ik de database nog niet mee.
kawotskimaandag 16 september 2013 @ 09:21
Wie kan mij helpen met dit waarschijnlijke simpele probleem.

Ik heb een tabel airlines met daarin 100 airlines. Nu wil ik de 1e, 30e, 60e en 90e tonen in 1 query. Nu stoei ik met LIMIT maar het enige waar ik opkom is om het apart uit te voeren, dus per stuk.
Tijnmaandag 16 september 2013 @ 09:51
http://stackoverflow.com/(...)-n-th-row-from-mysql
kawotskimaandag 16 september 2013 @ 11:18
quote:
Volgens mij is dit niet de juiste. Wat ik wil is (sorry dat ik het niet goed heb uitgelegd) dat de eerste airline een variabel wordt en de 30e een variabel die ik daarna combineer om er een url van te maken. Dat doe ik ook voor de 31e en 60e and so on. Mijn mysql kennis is nog net niet van het niveau dat ik hier een mooi iets neer kan zetten. Maar ik denk ergens dus aan een subquery met limit 0,1 en 30,1 (?)
zoemmaandag 16 september 2013 @ 11:27
Dat zou kunnen werken als je het combineert met een UNION.
kawotskimaandag 16 september 2013 @ 12:44
quote:
0s.gif Op maandag 16 september 2013 11:27 schreef zoem het volgende:
Dat zou kunnen werken als je het combineert met een UNION.
ik geef nog even wat info waar ik naar toe wil. Ik probeer van alles maar ik krijg een error omdat ik ORDER BY gebruik icm UNION,

$airline1 = SELECT airline FROM `airlines` ORDER BY airline LIMIT 0,1
$airline2 = SELECT airline FROM `airlines` ORDER BY airline LIMIT 30,1
Pakspulmaandag 16 september 2013 @ 12:51
quote:
7s.gif Op maandag 16 september 2013 12:44 schreef kawotski het volgende:

[..]

ik geef nog even wat info waar ik naar toe wil. Ik probeer van alles maar ik krijg een error omdat ik ORDER BY gebruik icm UNION,

$airline1 = SELECT airline FROM `airlines` ORDER BY airline LIMIT 0,1
$airline2 = SELECT airline FROM `airlines` ORDER BY airline LIMIT 30,1
Maar wil je het alleen met 0 en 30, of 0, 30, 60, 90, 120, etc.. want dan klopt de eerder stackflow link wel weer.
kawotskimaandag 16 september 2013 @ 13:04
quote:
0s.gif Op maandag 16 september 2013 12:51 schreef Pakspul het volgende:

[..]

Maar wil je het alleen met 0 en 30, of 0, 30, 60, 90, 120, etc.. want dan klopt de eerder stackflow link wel weer.
Ik heb iets te breed ingezet. Ik wil uit mijn tabel de eerste airline, de 30e, de 31e, de 60e, de 61e en de 90e.

Dan krijg je (wil ik) bijv. als resultaat Air Canada - KLM, en daarna KLM Cityhopper - Qantas (dus alleen die namen en niet wat ertussen zit

ik ben nu hier naar aan t kijken: http://stackoverflow.com/(...)lt-of-a-select-query
Pakspulmaandag 16 september 2013 @ 13:14
quote:
0s.gif Op maandag 16 september 2013 13:04 schreef kawotski het volgende:

[..]

Ik heb iets te breed ingezet. Ik wil uit mijn tabel de eerste airline, de 30e, de 31e, de 60e, de 61e en de 90e.

Dan krijg je (wil ik) bijv. als resultaat Air Canada - KLM, en daarna KLM Cityhopper - Qantas (dus alleen die namen en niet wat ertussen zit

ik ben nu hier naar aan t kijken: http://stackoverflow.com/(...)lt-of-a-select-query
Dan is de stackflow link die gegeven is perfect.

Ik heb er lokaal even mee getest, aangezien ik geen tabel met record had heb ik de 'mysql' database in phpmyadmin even gebruikt en dan naar de tabel 'time_zone'

1
2
3
4
5
6
7
8
9
10
11
12
SELECT * 
FROM ( 
    SELECT 
        @row := @row +1 AS rownum, time_zone_id 
    FROM ( 
        SELECT @row :=0) r, time_zone
    ) ranked 
WHERE 
    rownum % 30 = 1 
OR
    rownum % 31 = 1 
LIMIT 0, 6

Met deze query krijg ik er bijna uit wat je wil hebben. Speel hier eens mee, leer de operator modulo eens kennen en verander eens kleine dingen er aan.
kawotskimaandag 16 september 2013 @ 13:28
quote:
0s.gif Op maandag 16 september 2013 13:14 schreef Pakspul het volgende:

[..]

Dan is de stackflow link die gegeven is perfect.

Ik heb er lokaal even mee getest, aangezien ik geen tabel met record had heb ik de 'mysql' database in phpmyadmin even gebruikt en dan naar de tabel 'time_zone'
[ code verwijderd ]

Met deze query krijg ik er bijna uit wat je wil hebben. Speel hier eens mee, leer de operator modulo eens kennen en verander eens kleine dingen er aan.
Dat werkt , ik ga nog even verder klooien

2luqw75.gif
Pakspulmaandag 16 september 2013 @ 13:30
quote:
0s.gif Op maandag 16 september 2013 13:28 schreef kawotski het volgende:

[..]

Dat werkt , ik ga nog even verder klooien

[ afbeelding ]
Airlines per airlines in een variabel? Die begrijp ik niet helemaal.
kawotskimaandag 16 september 2013 @ 13:33
quote:
0s.gif Op maandag 16 september 2013 13:30 schreef Pakspul het volgende:

[..]

Airlines per airlines in een variabel? Die begrijp ik niet helemaal.
Stap 2 is dat ik volgens voorbeeld de 1e combineer met de 30e, dus 1Time en Air Arabia Egypt samenvoeg in 1 url.
Pakspulmaandag 16 september 2013 @ 13:38
quote:
0s.gif Op maandag 16 september 2013 13:33 schreef kawotski het volgende:

[..]

Stap 2 is dat ik volgens voorbeeld de 1e combineer met de 30e, dus 1Time en Air Arabia Egypt samenvoeg in 1 url.
1
2
3
4
5
6
7
<?php
for ( (int) $i 0$i 3$i++ )
{
    
$part1 $recordList[$i];
    
$part2 $recordList[$i 1];
}
?>

Het zal vast wel weer in een query kunnen, misschien dat die dan je subquery wordt waar je dan weer doorheen moet spitten, maar als het om maar 6 resultaten gaat kan kun je het ook in PHP oplossen.

1
2
3
4
5
6
7
<?php
for ( (int) $i 0$i 3$i++ )
{
    
$part1 $recordList[$i];
    
$part2 $recordList[$i 1];
}
?>

Mocht je dan later je query voor mekaar krijgen dan kun je het er altijd nog uitslopen, maar dan kun je nu verder :)
kawotskimaandag 16 september 2013 @ 13:45
quote:
0s.gif Op maandag 16 september 2013 13:38 schreef Pakspul het volgende:

[..]
[ code verwijderd ]

Het zal vast wel weer in een query kunnen, misschien dat die dan je subquery wordt waar je dan weer doorheen moet spitten, maar als het om maar 6 resultaten gaat kan kun je het ook in PHP oplossen.
[ code verwijderd ]

Mocht je dan later je query voor mekaar krijgen dan kun je het er altijd nog uitslopen, maar dan kun je nu verder :)
Dat is ook wel weer waar, ik ga dat eens proberen. Thanks alvast :)
Alfjemaandag 16 september 2013 @ 21:10
Als je een kolom numrow in de tabel hebt staan zoals in je voorbeeld kan je ook IN gebruiken.
1SELECT * FROM airline WHERE numrow IN (1, 30, 31, 60, 61, 90);
TwenteFCdinsdag 17 september 2013 @ 22:42
quote:
10s.gif Op zaterdag 14 september 2013 21:11 schreef Tijn het volgende:
Nou, ik ben van de week voor het eerst op een project gezet dat met Symfony 2 is gedaan en dat is een partij sloom, niet normaal. Ik hoop niet dat dit representatief is voor het framework :+
:P Geef Laravel 4 eens een kans, je gaat er van houden.
Crutchwoensdag 18 september 2013 @ 21:46
Het snelste framework is géén framework.
KomtTijd...donderdag 19 september 2013 @ 11:55
Even een stukje semantiek, wat staat beter?
1
2
3
/asset            -> lijst met assets
/asset/get/1      -> details asset #1
/asset/edit/1     -> formulier om asset #1 aan te passen
1
2
3
/asset             ->lijst met assets
/asset/1/          -> details asset #1
/asset/1/edit      -> asset #1 aanpassen
1
2
3
/asset/list       ->lijst met assets
/asset/1/get      -> details asset #1
/asset/1/edit     -> asset #1 aanpassen

of een combinatie van?
Pakspuldonderdag 19 september 2013 @ 12:05
quote:
14s.gif Op donderdag 19 september 2013 11:55 schreef KomtTijd... het volgende:
Even een stukje semantiek, wat staat beter?
[ code verwijderd ]

[ code verwijderd ]

[ code verwijderd ]

of een combinatie van?
Ik gebruik veelal de eerste. controller, action, parameters zo bekijk ik het. Als je in een programmeer taal ook een functie aanroept dan doe je ook $obj->Function($varA, $varb); Dus eerst definieer je de class (controller) dan roep je de functie aan (action) en geef je aan welke parameters je meegeeft.
KomtTijd...donderdag 19 september 2013 @ 12:20
Zo heb ik het nu ook ja. Maar de breadcrumbs op de pagina staan wel weer zo:

1
2
3
home > assets
home > assets > asset1
home > assets > asset1 > bewerken

Daarmee zou het consistenter zijn om de ID voor de action te plaatsen. Maar misschien is het ook wel gewoon een dom idee dat een URL consistent zou moeten zijn met breadcrums.
Tijndonderdag 19 september 2013 @ 12:23
Ik probeer urls meestal zo compact mogelijk te houden. Ik zou zelf voor vorm #2 gaan.
KomtTijd...donderdag 19 september 2013 @ 12:29
Overigens moet ik erbij zeggen dat het ook een REST-api is. Heb nog niet helemaal in mijn hoofd wat daarvoor de URL-structuur zou moeten worden. Het liefst heb je dan natuurlijk alleen /asset en /asset/id en regel je de actions met het type request (get/put/post/delete).
Lightvrijdag 20 september 2013 @ 22:42
quote:
14s.gif Op donderdag 19 september 2013 11:55 schreef KomtTijd... het volgende:
Even een stukje semantiek, wat staat beter?
[ code verwijderd ]

[ code verwijderd ]

[ code verwijderd ]

of een combinatie van?
1
2
3
/assets             ->lijst met assets
/assets/1/          -> details asset #1
/assets/1/edit      -> asset #1 aanpassen

Ik zou voor meervoud kiezen ipv enkelvoud. En /assets/1/edit heb je eigenlijk alleen nodig voor web. Om een edit te kunnen maken, moet er een edit-pagina zijn. En daar voorziet REST niet in.

Dan kom je op zoiets:
1
2
3
4
5
6
7
         users GET    /users(.:format)               users#index
               POST   /users(.:format)               users#create
      new_user GET    /users/new(.:format)           users#new
     edit_user GET    /users/:id/edit(.:format)      users#edit
          user GET    /users/:id(.:format)           users#show
               PUT    /users/:id(.:format)           users#update
               DELETE /users/:id(.:format)           users#destroy
new en edit zijn puur bedoeld om een formuliertje te presenteren. En dit lijstje komt uit een Ruby on Rails projectje.
Juicyhilvrijdag 20 september 2013 @ 22:46
quote:
0s.gif Op vrijdag 20 september 2013 22:42 schreef Light het volgende:

[..]
[ code verwijderd ]

Ik zou voor meervoud kiezen ipv enkelvoud. En /assets/1/edit heb je eigenlijk alleen nodig voor web. Om een edit te kunnen maken, moet er een edit-pagina zijn. En daar voorziet REST niet in.

Dan kom je op zoiets:
[ code verwijderd ]

new en edit zijn puur bedoeld om een formuliertje te presenteren. En dit lijstje komt uit een Ruby on Rails projectje.
De meeste conventies die ik tegenkom spreken altijd over enkelvoudige namen...
Lightvrijdag 20 september 2013 @ 22:57
quote:
0s.gif Op vrijdag 20 september 2013 22:46 schreef Juicyhil het volgende:

[..]

De meeste conventies die ik tegenkom spreken altijd over enkelvoudige namen...
Als je het helemaal netjes wilt doen, gebruik je meervoud voor het opvragen van de lijst (en toevoegen aan de lijst) en enkelvoud voor acties die op 1 item gaan. Maar dat heeft weer als nadeel dat je niet een stuk na een slash kunt weghalen en een geldige url overhoudt.
Juicyhilvrijdag 20 september 2013 @ 23:01
quote:
0s.gif Op vrijdag 20 september 2013 22:57 schreef Light het volgende:

[..]

Als je het helemaal netjes wilt doen, gebruik je meervoud voor het opvragen van de lijst (en toevoegen aan de lijst) en enkelvoud voor acties die op 1 item gaan. Maar dat heeft weer als nadeel dat je niet een stuk na een slash kunt weghalen en een geldige url overhoudt.
Enige consistentie daarin is inderdaad wel gewenst. Een url als /search/results vind ik dan wel weer geoorloofd. Maar bijvoorbeeld /user/1/profile zou ik dan dus wel enkelvoud laten.
Lightvrijdag 20 september 2013 @ 23:10
quote:
0s.gif Op vrijdag 20 september 2013 23:01 schreef Juicyhil het volgende:

[..]

Enige consistentie daarin is inderdaad wel gewenst. Een url als /search/results vind ik dan wel weer geoorloofd. Maar bijvoorbeeld /user/1/profile zou ik dan dus wel enkelvoud laten.
Ik neig meer richting meervoud, maar smaken verschillen. En over consistentie zijn we het wel eens. Als je /user/1 gebruikt, dan ook /user. En als je /users wilt gebruiken, dan ook /users/1.
xaban06donderdag 26 september 2013 @ 00:08
Ik ben bezig met het bouwen van een nieuwssysteem, mijn vraag is welk type moet ik gebruiken om 'datum/tijd' op te slaan?

Vroeger gebruikte ik gewoon varchar en gebruikte formaat: 201309260007 (2013 - 09 - 26, 00:07). Dit was makkelijk om records uit 2013 te zoeken, records uit een bepaald maand te zoeken etc.

Echter heeft het ook zijn nadelen.

Wat raden jullie aan?
#ANONIEMdonderdag 26 september 2013 @ 00:11
quote:
0s.gif Op donderdag 26 september 2013 00:08 schreef xaban06 het volgende:
Ik ben bezig met het bouwen van een nieuwssysteem, mijn vraag is welk type moet ik gebruiken om 'datum/tijd' op te slaan?

Vroeger gebruikte ik gewoon varchar en gebruikte formaat: 201309260007 (2013 - 09 - 26, 00:07). Dit was makkelijk om records uit 2013 te zoeken, records uit een bepaald maand te zoeken etc.

Echter heeft het ook zijn nadelen.

Wat raden jullie aan?
Dat moet eeuwen geleden zijn dan :P
Je hebt gewoon het type DATETIME die slaat de datum op als "Y-m-d H:i:s" "2013-09-26 00:11:00"
xaban06donderdag 26 september 2013 @ 00:26
quote:
0s.gif Op donderdag 26 september 2013 00:11 schreef totalvamp het volgende:

[..]

Dat moet eeuwen geleden zijn dan :P
Je hebt gewoon het type DATETIME die slaat de datum op als "Y-m-d H:i:s" "2013-09-26 00:11:00"
En bestaat daar ook een PHP functie voor om bijvoorbeeld 'nu-3 jaar' te doen? Dus "2010-09-26 00:11:00"
zoemdonderdag 26 september 2013 @ 00:32
Dat kan ook met MySQL: UNIX_TIMESTAMP(datum) > $mystamp, of iets met YEAR(datum) afhankelijk van wat je wilt bereiken.
#ANONIEMdonderdag 26 september 2013 @ 00:35
quote:
0s.gif Op donderdag 26 september 2013 00:26 schreef xaban06 het volgende:

[..]

En bestaat daar ook een PHP functie voor om bijvoorbeeld 'nu-3 jaar' te doen? Dus "2010-09-26 00:11:00"
Ja, maar je kunt het beter in mysql zelf doen.
1
2
3
4
5
<?php
select 

from orders 
where order_date 
>= DATE_SUB(NOW(),INTERVAL 3 YEAR);
?>

Waarvoor maak je een nieuwssystem trouwens?

[ Bericht 1% gewijzigd door #ANONIEM op 26-09-2013 00:37:38 ]
xaban06donderdag 26 september 2013 @ 00:39
quote:
0s.gif Op donderdag 26 september 2013 00:35 schreef totalvamp het volgende:

[..]

Ja, maar je kunt het beter in mysql zelf doen.
[ code verwijderd ]

Waarvoor maak je een nieuwssystem trouwens?
Voor mij zelf, een hobby website.

Kan helaas geen kant en klare systeem gebruiken omdat bij ieder pakket wel iets mist.
#ANONIEMdonderdag 26 september 2013 @ 00:40
quote:
0s.gif Op donderdag 26 september 2013 00:39 schreef xaban06 het volgende:

[..]

Voor mij zelf, een hobby website.

Kan helaas geen kant en klare systeem gebruiken omdat bij ieder pakket wel iets mist.
Ik snap je dilemma.
Maak je gebruik van classes?
xaban06donderdag 26 september 2013 @ 00:42
quote:
0s.gif Op donderdag 26 september 2013 00:40 schreef totalvamp het volgende:

[..]

Ik snap je dilemma.
Maak je gebruik van classes?
Nee. Ik heb PHP geleerd met versie 4, toen was er nog niet echt OOP ondersteuning, de boeken die ik gebruikte gingen er dus ook niet echt diep op in. Helaas, nooit geleerd.
#ANONIEMdonderdag 26 september 2013 @ 00:43
quote:
0s.gif Op donderdag 26 september 2013 00:42 schreef xaban06 het volgende:

[..]

Nee. Ik heb PHP geleerd met versie 4, toen was er nog niet echt OOP ondersteuning, de boeken die ik gebruikte gingen er dus ook niet echt diep op in. Helaas, nooit geleerd.
Dan zou ik vanaf het begin af aan beginnen. Wat er toen in die boeken stond is nu gevaarlijk(was het toen ook al).
Heb je toevallig een voorbeeld van je code?
xaban06donderdag 26 september 2013 @ 00:43
quote:
0s.gif Op donderdag 26 september 2013 00:43 schreef totalvamp het volgende:

[..]

Dan zou ik vanaf het begin af aan beginnen. Wat er toen in die boeken stond is nu gevaarlijk(was het toen ook al).
Heb je toevallig een voorbeeld van je code?
Nee, al jaren niet meer gescript :)

Om nu vanaf begin te beginnen, pfff, gaat weer zoveel tijd in zitten.

Even kijken of ik iets kan vinden (eigen code).
xaban06donderdag 26 september 2013 @ 00:48
Ok, heb iets kunnen vinden, maar is maar half, ik zie dat ik tig bestanden heb gebruikt waardoor ik niet meer weet wat wat is :P

SPOILER
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
<?php
/*
* Load the correct category and page
*/

switch ($first) {
        case 
"ninniler":
                
$load_category  'ninniler_category.php';
                
$menu_current   'ninniler';
                break;
        case 
"bebek-resimleri":
                
$load_category  'bebek-resimleri_category.php';
                
$menu_current   'bebek-resimleri';
                break;
        case 
"forum":
                
$load_category  'forum_category.php';
                break;
        case 
"iletisim":
                
$load_category  'iletisim_category.php';
                
$menu_current   'iletisim';
                break;
        default:
                
$load_category  'index_category.php';
                
$menu_current   'default';
}

if (empty(
$second)) {
        
/* $second is empty, just load the index of category */

        /* First check if category realy exists */
        
if ($first == "ninniler" OR $first == "bebek-resimleri" OR $first == "forum" OR $first == "iletisim" OR empty($first)) {
                include 
$load_category;
                } else {
header"HTTP/1.1 301 Moved Permanently" );
header"Location:http://www.x.com/" );
                }
        } else {

        
/* $second is NOT empty, load the details for the page */
        
if ($first == "ninniler") {
                
$sql_ninniler   mysql_query("SELECT `title` , `content` , `url` , `html_title` , `html_keywords` , `html_desc` , `active` FROM `ninniler` WHERE `url` = '$second' AND `active` = 'y'");

                if (
mysql_num_rows($sql_ninniler) > 0) {
                
$html_title             mysql_result($sql_ninniler0'html_title');
                
$html_keywords  mysql_result($sql_ninniler0'html_keywords');
                
$html_desc              mysql_result($sql_ninniler0'html_desc');
                } else {
                include 
'index_category.php';
                }
        }

        if (
$first == "bebek-resimleri") {
                
$sql_bebek_resimleri    mysql_query("SELECT `id` , `html_title` , `html_keywords` , `html_desc` , `active` FROM `bebek-resimleri` WHERE `id` = '$second' AND `active` = 'y'");

                if (
mysql_num_rows($sql_bebek_resimleri) > 0) {
                
$html_title             mysql_result($sql_bebek_resimleri0'html_title');
                
$html_keywords  mysql_result($sql_bebek_resimleri0'html_keywords');
                
$html_desc              mysql_result($sql_bebek_resimleri0'html_desc');
                } else {
                include 
'index_category.php';
                }
        }
}
?>
xaban06donderdag 26 september 2013 @ 00:55
Dit wordt de structuur ongeveer, is nog niet af.
1
2
3
4
5
6
7
8
9
10
11
News
|- id                 int        6    unsigned    auto_increment
|- post_title         varchar    80
|- post_introduction  text       -
|- post_content       text       -
|- post_icon          varchar    15
|- post_date          datetime   -
|- post_category      varchar    10
|- post_url           varchar    85
|- post_author        int        5    unsigned
|- post_status        varchar    10
Kakdieusernameisalbezetdonderdag 26 september 2013 @ 00:57
Hallo, vergeef mij dat ik een php noob ben, ik wil het graag leren. Ik heb 2 vragen:
Ik ben wat aan het klooien met php en mysql. Nu maak ik dat in een mapje op de pc, en upload ik dit naar m'n server. Alles werkte prima, maar sinds vanmiddag, van het 1 op andere moment wordt de php code lokaal niet meer geparsd. Dus als ik de file dan open in chrome zie ik de code ipv het resultaat. Als ik deze file upload naar m'n server werkt alles naar behoren. Enig idee hoe dit zou kunnen komen zonder instellingen te hebben verander/software geïnstalleerd of gedeïnstalleerd etc.?

En vraag 2: Ik heb hiervoor altijd in actionscript geprogrammeerd. Ik ben toe aan iets nieuws en daarom begonnen met php/mysql. Welk boek raden jullie aan om goed te leren phpen? Ik heb wel 2 boeken maar daar wordt teveel over syntax geleutert, dat snap ik allemaal wel... Een soort van boek met tutorials heeft m'n voorkeur..

Bednakt voor het lezen en antwoorden!
#ANONIEMdonderdag 26 september 2013 @ 00:57
quote:
0s.gif Op donderdag 26 september 2013 00:48 schreef xaban06 het volgende:
Ok, heb iets kunnen vinden, maar is maar half, ik zie dat ik tig bestanden heb gebruikt waardoor ik niet meer weet wat wat is :P

SPOILER
[ code verwijderd ]

Oei :P dat kan stukken netter.
Het is ook makkelijker met classes te werken die kun je automatisch inladen.

quote:
0s.gif Op donderdag 26 september 2013 00:55 schreef xaban06 het volgende:
Dit wordt de structuur ongeveer, is nog niet af.
[ code verwijderd ]
ik zou alleen een category_id meegeven ipv de cat naam. Dan kun je een tabel maken met categorieën en die joinen op news
zoemdonderdag 26 september 2013 @ 00:57
quote:
0s.gif Op donderdag 26 september 2013 00:48 schreef xaban06 het volgende:
Ok, heb iets kunnen vinden, maar is maar half, ik zie dat ik tig bestanden heb gebruikt waardoor ik niet meer weet wat wat is :P

SPOILER
[ code verwijderd ]

Let je wel op met sql-injectie?

En staat $first en $second voor wat ik denk dat het staat? Wat gebeurt er dan wanneer je de website in een ander pad draait? Gebruik hiervoor een router class, te vinden in allerlei frameworks.
#ANONIEMdonderdag 26 september 2013 @ 00:59
quote:
0s.gif Op donderdag 26 september 2013 00:57 schreef Kakdieusernameisalbezet het volgende:
Hallo, vergeef mij dat ik een php noob ben, ik wil het graag leren. Ik heb 2 vragen:
Ik ben wat aan het klooien met php en mysql. Nu maak ik dat in een mapje op de pc, en upload ik dit naar m'n server. Alles werkte prima, maar sinds vanmiddag, van het 1 op andere moment wordt de php code lokaal niet meer geparsd. Dus als ik de file dan open in chrome zie ik de code ipv het resultaat. Als ik deze file upload naar m'n server werkt alles naar behoren. Enig idee hoe dit zou kunnen komen zonder instellingen te hebben verander/software geïnstalleerd of gedeïnstalleerd etc.?

En vraag 2: Ik heb hiervoor altijd in actionscript geprogrammeerd. Ik ben toe aan iets nieuws en daarom begonnen met php/mysql. Welk boek raden jullie aan om goed te leren phpen? Ik heb wel 2 boeken maar daar wordt teveel over syntax geleutert, dat snap ik allemaal wel... Een soort van boek met tutorials heeft m'n voorkeur..

Bednakt voor het lezen en antwoorden!
voorbeeld van de code :P?

Ik zou geen boeken raadplegen. Het beste is om de bekende frameworks na te lopen en kijken hoe dat in elkaar steekt. Lees je ook in op OOP er zijn zat voorbeelden met uitleg online.
Kakdieusernameisalbezetdonderdag 26 september 2013 @ 01:02
quote:
0s.gif Op donderdag 26 september 2013 00:59 schreef totalvamp het volgende:

[..]

voorbeeld van de code :P?

Ik zou geen boeken raadplegen. Het beste is om de bekende frameworks na te lopen en kijken hoe dat in elkaar steekt. Lees je ook in op OOP er zijn zat voorbeelden met uitleg online.
Gaat niet om de code, als ik in een pagina <?php echo "hallo"; ?> doe laat ie het ook zo zien, ipv dat de output "hallo" is. Dit heeft sowieso niet met de code te maken, op alle browsers geeft ie ehtzelfde probleem. Geen idee waar het aan kan liggen.
#ANONIEMdonderdag 26 september 2013 @ 01:03
quote:
0s.gif Op donderdag 26 september 2013 01:02 schreef Kakdieusernameisalbezet het volgende:

[..]

Gaat niet om de code, als ik in een pagina <?php echo "hallo"; ?> doe laat ie het ook zo zien, ipv dat de output "hallo" is. Dit heeft sowieso niet met de code te maken, op alle browsers geeft ie ehtzelfde probleem. Geen idee waar het aan kan liggen.
klinkt alsof de php module niet wordt geladen. Wat voor webserver heb je? Xampp?
Kakdieusernameisalbezetdonderdag 26 september 2013 @ 01:05
quote:
0s.gif Op donderdag 26 september 2013 01:03 schreef totalvamp het volgende:

[..]

klinkt alsof de php module niet wordt geladen. Wat voor webserver heb je? Xampp?
Mja zoiets dacht ik al, alleen grappige is dat ik nooit zoiets heb geïnstalleerd. Ik ben wat phptutorials gaan doen, phpfiles maken in dreamweaver, openen met chrome en dat werkte. Niks voor geïnstalleerd
#ANONIEMdonderdag 26 september 2013 @ 01:06
quote:
0s.gif Op donderdag 26 september 2013 01:05 schreef Kakdieusernameisalbezet het volgende:

[..]

Mja zoiets dacht ik al, alleen grappige is dat ik nooit zoiets heb geïnstalleerd. Ik ben wat phptutorials gaan doen, phpfiles maken in reamweaver, openen met chrome en dat werkte. Niks voor geïnstalleerd
Dan zal dreamweaver een ingebouwde server hebben gehad. Installeer XAMPP en probeer opnieuw :P
Kakdieusernameisalbezetdonderdag 26 september 2013 @ 01:08
quote:
0s.gif Op donderdag 26 september 2013 01:06 schreef totalvamp het volgende:

[..]

Dan zal dreamweaver een ingebouwde server hebben gehad. Installeer XAMPP en probeer opnieuw :P
Haha yes sir, thanks! Morgen direct proberen!
xaban06donderdag 26 september 2013 @ 03:01
quote:
0s.gif Op donderdag 26 september 2013 00:57 schreef totalvamp het volgende:

[..]

Oei :P dat kan stukken netter.
Het is ook makkelijker met classes te werken die kun je automatisch inladen.

[..]

ik zou alleen een category_id meegeven ipv de cat naam. Dan kun je een tabel maken met categorieën en die joinen op news
Een nieuws artikel kan meer dan 1 categorien hebben :)
Een voorbeeld record wordt dan 1|6|9, artikel zit dus in category 1, 6 en 9. Of kan dat ook slimmer/handiger/logischer?
#ANONIEMdonderdag 26 september 2013 @ 03:21
quote:
0s.gif Op donderdag 26 september 2013 03:01 schreef xaban06 het volgende:

[..]

Een nieuws artikel kan meer dan 1 categorien hebben :)
Een voorbeeld record wordt dan 1|6|9, artikel zit dus in category 1, 6 en 9. Of kan dat ook slimmer/handiger/logischer?
koppel tabellen.
Devolutiondonderdag 26 september 2013 @ 08:33
quote:
0s.gif Op donderdag 26 september 2013 01:08 schreef Kakdieusernameisalbezet het volgende:

[..]

Haha yes sir, thanks! Morgen direct proberen!
Een aanrader voor beginners: http://www.usbwebserver.net/
Chandlerdonderdag 26 september 2013 @ 09:06
quote:
12s.gif Op donderdag 26 september 2013 08:33 schreef Devolution het volgende:

[..]

Een aanrader voor beginners: http://www.usbwebserver.net/
Niet alleen voor beginners hoor ;) heeft precies wat een gemiddelde web (php) developer nodig heeft.. gebruik het nu al jaren! veel beter dan xamp, wamp en dergelijke alternatieven!
Pakspuldonderdag 26 september 2013 @ 09:58
quote:
0s.gif Op vrijdag 20 september 2013 22:42 schreef Light het volgende:

[..]
[ code verwijderd ]

Ik zou voor meervoud kiezen ipv enkelvoud. En /assets/1/edit heb je eigenlijk alleen nodig voor web. Om een edit te kunnen maken, moet er een edit-pagina zijn. En daar voorziet REST niet in.

Dan kom je op zoiets:
[ code verwijderd ]

new en edit zijn puur bedoeld om een formuliertje te presenteren. En dit lijstje komt uit een Ruby on Rails projectje.
Meervoud klopt niet, want als jij een pagina asset/1 hebt, dan is het logisch dat er meerdere zijn. Dus je hebt het al over meervoud. Zelfde als bij database tabellen. Een tabel "persons" noemen is vreemd, aangezien er meerdere records al in komen te staan over personen. Daarom gebruik ik altijd enkelvoud. Meervoud in urls kom ik ook eigenlijk nooit tegen, zelfs database tabellen in meervoud niet.
slacker_nldonderdag 26 september 2013 @ 10:01
quote:
0s.gif Op donderdag 26 september 2013 09:06 schreef Chandler het volgende:
Niet alleen voor beginners hoor ;) heeft precies wat een gemiddelde web (php) developer nodig heeft.. gebruik het nu al jaren! veel beter dan xamp, wamp en dergelijke alternatieven!
Ik ben niet de intended audience, maarruh.. waarom is het beter dan? Want ik zie niet wat er moeilijk is aan een webserver optuigen die PHP serveert..
Chandlerdonderdag 26 september 2013 @ 10:12
quote:
0s.gif Op donderdag 26 september 2013 10:01 schreef slacker_nl het volgende:
Ik ben niet de intended audience, maarruh.. waarom is het beter dan? Want ik zie niet wat er moeilijk is aan een webserver optuigen die PHP serveert..
Omdat het klik en play is! sterker nog, gewoon uitpakken, starten en het werkt! XAMPP en dergelijke packs bevatten veel meer dan een gemiddelde webdeveloper nodig heeft (imo). Daarnaast doet het precies wat een 'normale' webserver ook doet, het serveren van pagina's! :P

Maar goed, alles is persoonlijk maar mijn voorkeur gaat idd naar usbwebserver aangezien ik vele webservers heb geprobeerd en toch steeds bij deze terug kom! *)
KomtTijd...donderdag 26 september 2013 @ 10:21
sudo apt-get install lamp-server^

:O
xaban06donderdag 26 september 2013 @ 10:45
quote:
0s.gif Op donderdag 26 september 2013 03:21 schreef totalvamp het volgende:

[..]

koppel tabellen.
Hoe bedoel je?

Een aparte relationship tabel?
Feoladonderdag 26 september 2013 @ 11:43
Ik heb een aantal records opgeslagen, met een veld datum, opgeslagen als date("c").

Als ik de records van de laatste 2 uur wil ophalen, wil ik dat doen met:

1
2
3
4
$nu = date("c");
$einddatum = date("c", strtotime('-2 hours'));

select * from blabla where date BETWEEN "'.$nu.'" and "'.$einddatum.'"

Alleen krijg ik niks terug?

$nu en $einddatum geven wel

12013-09-26T11:41:54+02:00   2013-09-26T09:41:54+02:00

terug, hoe kan dit? Of kan dit veel makkelijker/ effectiever?
KomtTijd...donderdag 26 september 2013 @ 11:47
`date` is wel een datetime veld?
KomtTijd...donderdag 26 september 2013 @ 11:48
quote:
0s.gif Op donderdag 26 september 2013 10:45 schreef xaban06 het volgende:

[..]

Hoe bedoel je?

Een aparte relationship tabel?
...in goed Nederlands ook wel koppeltabel genoemd ja.
Feoladonderdag 26 september 2013 @ 12:01
quote:
5s.gif Op donderdag 26 september 2013 11:47 schreef KomtTijd... het volgende:
`date` is wel een datetime veld?
Nee, moet dat persé?
zoemdonderdag 26 september 2013 @ 12:04
quote:
99s.gif Op donderdag 26 september 2013 12:01 schreef boskameel het volgende:

[..]

Nee, moet dat persé?
Ja, anders gaat het nooit werken... tenzij je de string on the fly naar een datetime omzet met een sql-functie. Maar dat is iets wat je liever niet doet.
Feoladonderdag 26 september 2013 @ 12:09
Oke, `date` is nu een datetime.

Datums in de db staan er als volgt in:

2013-09-26 11:59:33
2013-09-26 11:55:00
etc

Nu en einddatum heb ik op deze manier ingesteld:

1
2
$nu = date('Y-m-d H:i:s');
$einddatum = date("Y-m-d H:i:s", strtotime('-2 hours'));

en geven dit als output:
2013-09-26 12:08:17
2013-09-26 10:08:17

Lege output, zie ik nog iets over het hoofd?
Maringodonderdag 26 september 2013 @ 12:21
quote:
99s.gif Op donderdag 26 september 2013 12:09 schreef boskameel het volgende:
Lege output, zie ik nog iets over het hoofd?
Ook geen error?
Rockfiredonderdag 26 september 2013 @ 12:21
quote:
99s.gif Op donderdag 26 september 2013 12:09 schreef boskameel het volgende:
Oke, `date` is nu een datetime.

Datums in de db staan er als volgt in:

2013-09-26 11:59:33
2013-09-26 11:55:00
etc

Nu en einddatum heb ik op deze manier ingesteld:
[ code verwijderd ]

en geven dit als output:
2013-09-26 12:08:17
2013-09-26 10:08:17

Lege output, zie ik nog iets over het hoofd?
Misschien moet je $nu en $einddatum in je query even omdraaien ;) $einddatum ligt namelijk voor $nu (dus zou ook eigenlijk $startdatum moeten heten)
Feoladonderdag 26 september 2013 @ 12:22
Aargh, ik was er zelf net achter :'). Danku!
zoemdonderdag 26 september 2013 @ 12:27
Om verwarring te voorkomen zou je $einddatum beter anders kunnen noemen. Het is eigenlijk de begindatum en $nu is je einddatum.
#ANONIEMdonderdag 26 september 2013 @ 21:24
quote:
99s.gif Op donderdag 26 september 2013 12:09 schreef boskameel het volgende:
Oke, `date` is nu een datetime.

Datums in de db staan er als volgt in:

2013-09-26 11:59:33
2013-09-26 11:55:00
etc

Nu en einddatum heb ik op deze manier ingesteld:
[ code verwijderd ]

en geven dit als output:
2013-09-26 12:08:17
2013-09-26 10:08:17

Lege output, zie ik nog iets over het hoofd?
Je kan het ook gewoon in MYSQL zelf doen :) dit met DATE_SUB(NOW(), -2 HOUR)
#ANONIEMdonderdag 26 september 2013 @ 21:58
Ik ben nu al zeker een jaar met php bezig, en ik zou zeggen dat ik het redelijk goed beheers maar nu loop ik tegen iets simpels aan wat ik gewoon niet begrijp :{

search.php
1
2
3
4
5
6
7
8
9
10
11
<?php
    
if ( key_exists"not"$_GET ) )
    {
        echo 
"test1";
        if ( !
is_null$_GET"not" ] ) || !empty($_GET["not"]) )
        {
            echo 
"test2";
            
        }
    }
?>

Met
1search.php?match=d_ 
komt die nergens, tot zover snap ik het nog, echter met
1search.php?match=d_¬=
komt die tot test2.. Hij zou toch enkel tot test1 moeten komen dan?

Wat zie ik over het hoofd? :')

Edit: Geen idee hoe ¬ opeens in de uri staat, dat moet een ampersand zijn.., in het invoerveld hier staat die gewoon als ampersand..

[ Bericht 2% gewijzigd door #ANONIEM op 26-09-2013 22:01:34 ]
Crutchdonderdag 26 september 2013 @ 22:15
quote:
2s.gif Op donderdag 26 september 2013 21:58 schreef d4v1d het volgende:
Ik ben nu al zeker een jaar met php bezig, en ik zou zeggen dat ik het redelijk goed beheers maar nu loop ik tegen iets simpels aan wat ik gewoon niet begrijp :{

search.php
[ code verwijderd ]

Met
[ code verwijderd ]

komt die nergens, tot zover snap ik het nog, echter met
[ code verwijderd ]

komt die tot test2.. Hij zou toch enkel tot test1 moeten komen dan?

Wat zie ik over het hoofd? :')

Edit: Geen idee hoe ¬ opeens in de uri staat, dat moet een ampersand zijn.., in het invoerveld hier staat die gewoon als ampersand..
Wat probeer je te bereiken?
Misschien de hele search snippet even posten?
#ANONIEMdonderdag 26 september 2013 @ 22:16
quote:
2s.gif Op donderdag 26 september 2013 21:58 schreef d4v1d het volgende:
Ik ben nu al zeker een jaar met php bezig, en ik zou zeggen dat ik het redelijk goed beheers maar nu loop ik tegen iets simpels aan wat ik gewoon niet begrijp :{

search.php
[ code verwijderd ]

Met
[ code verwijderd ]

komt die nergens, tot zover snap ik het nog, echter met
[ code verwijderd ]

komt die tot test2.. Hij zou toch enkel tot test1 moeten komen dan?

Wat zie ik over het hoofd? :')

Edit: Geen idee hoe ¬ opeens in de uri staat, dat moet een ampersand zijn.., in het invoerveld hier staat die gewoon als ampersand..
Ik neem aan dat je array_key_exists() bedoelt en niet key_exists?

als je iets uit een invoerveld in de URL wilt zul je urlencode moeten gebruiken.
#ANONIEMdonderdag 26 september 2013 @ 22:18
quote:
0s.gif Op donderdag 26 september 2013 22:16 schreef totalvamp het volgende:

[..]

Ik neem aan dat je array_key_exists() bedoelt en niet key_exists?

als je iets uit een invoerveld in de URL wilt zul je urlencode moeten gebruiken.
key_exists is een alias, dus zou niet uit moeten maken.

urlendecode was ik vergeten, even doen ja :P
quote:
0s.gif Op donderdag 26 september 2013 22:15 schreef Crutch het volgende:

[..]

Wat probeer je te bereiken?
Misschien de hele search snippet even posten?
Al gevonden, Het moest
1
2
3
<?php
if ( !(is_null$_GET"not" ] ) || empty($_GET["not"])) )
?>
zijn. (Dus met de haakjes om beide)

Opgelost dus.

[ Bericht 0% gewijzigd door #ANONIEM op 26-09-2013 22:19:52 ]
KomtTijd...donderdag 26 september 2013 @ 22:21
...ik mag aannemen dat je zo'n maffe if niet in je productiecode zet?
Lightdonderdag 26 september 2013 @ 22:21
quote:
2s.gif Op donderdag 26 september 2013 22:18 schreef d4v1d het volgende:

Al gevonden, Het moest
[ code verwijderd ]

zijn. (Dus met de haakjes om beide)

Opgelost dus.
empty() controleert ook op null-waardes. Als een variabele null is, is deze ook empty. Die extra null-check is dus niet nodig.
#ANONIEMdonderdag 26 september 2013 @ 22:22
quote:
14s.gif Op donderdag 26 september 2013 22:21 schreef KomtTijd... het volgende:
...ik mag aannemen dat je zo'n maffe if niet in je productiecode zet?
Wat is er maf aan?
quote:
0s.gif Op donderdag 26 september 2013 22:21 schreef Light het volgende:

[..]

empty() controleert ook op null-waardes. Als een variabele null is, is deze ook empty. Die extra null-check is dus niet nodig.
Ah, thx.
slacker_nldonderdag 26 september 2013 @ 22:23
quote:
14s.gif Op donderdag 26 september 2013 22:21 schreef KomtTijd... het volgende:
...ik mag aannemen dat je zo'n maffe if niet in je productiecode zet?
Wat is er gek aan? (even los van het commentaar van Light).
#ANONIEMdonderdag 26 september 2013 @ 22:24
quote:
0s.gif Op donderdag 26 september 2013 22:23 schreef slacker_nl het volgende:

[..]

Wat is er gek aan? (even los van het commentaar van Light).
normaal heb je in een framework functies die de requests afvangen en controleren op foutieve data.
KomtTijd...donderdag 26 september 2013 @ 22:25
quote:
0s.gif Op donderdag 26 september 2013 22:23 schreef slacker_nl het volgende:

[..]

Wat is er gek aan? (even los van het commentaar van Light).
Nouja dat, plus het lijkt meer een soort van puzzelopdracht om de haakjes en dubbele negaties te ontcijferen.
#ANONIEMdonderdag 26 september 2013 @ 22:26
quote:
0s.gif Op donderdag 26 september 2013 22:24 schreef totalvamp het volgende:

[..]

normaal heb je in een framework functies die de requests afvangen en controleren op foutieve data.
Ik gebruik geen framework.
quote:
14s.gif Op donderdag 26 september 2013 22:25 schreef KomtTijd... het volgende:

[..]

Nouja dat, plus het lijkt meer een soort van puzzelopdracht om de haakjes en dubbele negaties te ontcijferen.
Hoe bekijk jij dan of iets van je $_GET is zoals je het wil? (In dit geval niet leeg of niet opgegeven..)
KomtTijd...donderdag 26 september 2013 @ 22:27
quote:
2s.gif Op donderdag 26 september 2013 22:26 schreef d4v1d het volgende:

[..]

Ik gebruik geen framework.

[..]

Hoe bekijk jij dan of iets van je $_GET is zoals je het wil? (In dit geval niet leeg of niet opgegeven..)
gewoon met empty().
#ANONIEMdonderdag 26 september 2013 @ 22:28
quote:
14s.gif Op donderdag 26 september 2013 22:27 schreef KomtTijd... het volgende:

[..]

gewoon met empty().
Ja dat heb ik nu, zie de opmerking van Light. :+

1
2
3
4
5
6
7
8
9
10
11
<?php
    
    
if ( key_exists"not"$_GET ) )
    {
        
$not urldecode$_GET"not" ] );
        if ( !empty( 
$not ) )
        {
            
// doe iets..
        
}
    }
?>


[ Bericht 0% gewijzigd door #ANONIEM op 26-09-2013 22:28:40 ]
KomtTijd...donderdag 26 september 2013 @ 22:29
Wat dacht je van
1
2
3
4
5
6
<?php
if (!empty($_GET['not']))
{
  
//doe iets
}
?>

...om maar een bizarre dwarsstraat te noemen.
#ANONIEMdonderdag 26 september 2013 @ 22:29
quote:
14s.gif Op donderdag 26 september 2013 22:29 schreef KomtTijd... het volgende:
Wat dacht je van
[ code verwijderd ]

...om maar een bizarre dwarsstraat te noemen.
En dan een warning krijgen dat de key "not" niet bestaat :P (ookal staan die in de productieomgeving uiteindelijk uit natuurlijk..)

[ Bericht 5% gewijzigd door #ANONIEM op 26-09-2013 22:30:00 ]
#ANONIEMdonderdag 26 september 2013 @ 22:30
quote:
2s.gif Op donderdag 26 september 2013 22:26 schreef d4v1d het volgende:

[..]

Ik gebruik geen framework.

[..]

Hoe bekijk jij dan of iets van je $_GET is zoals je het wil? (In dit geval niet leeg of niet opgegeven..)
1
2
3
4
5
6
7
8
9
10
11
12
13
<?php
class Request {
   public static function 
get($key) {
         return (!empty(
$_GET[$key])?$_GET[$key]:false;
   }

  public static function 
post($key) {
         return (!empty(
$_POST[$key])?$_POST[$key]:false;
   }
}

$var Request::get('not');
?>


[ Bericht 9% gewijzigd door #ANONIEM op 26-09-2013 22:32:44 ]
KomtTijd...donderdag 26 september 2013 @ 22:30
empty controleert ook op bestaan.
KomtTijd...donderdag 26 september 2013 @ 22:30
http://php.net/manual/en/function.empty.php

Documentatie. Wat moesten we zonder.
#ANONIEMdonderdag 26 september 2013 @ 22:31
quote:
14s.gif Op donderdag 26 september 2013 22:30 schreef KomtTijd... het volgende:
empty controleert ook op bestaan.
Meen je die? :@
#ANONIEMdonderdag 26 september 2013 @ 22:31
Ik deed moeilijk om niks dus _O-
#ANONIEMdonderdag 26 september 2013 @ 22:32
quote:
0s.gif Op donderdag 26 september 2013 22:30 schreef totalvamp het volgende:

[..]
[ code verwijderd ]

Ziet er netjes uit wel. Toch even overwegen misschien
#ANONIEMdonderdag 26 september 2013 @ 22:34
quote:
2s.gif Op donderdag 26 september 2013 22:32 schreef d4v1d het volgende:

[..]

Ziet er netjes uit wel. Toch even overwegen misschien
Voordeel van (static) classes en functies :) erg handig voor dingen die je meerdere keren gebruikt.

Mijn favo voor lokaal testen vand data
1
2
3
4
5
6
7
8
9
10
11
<?php

    
class HTML {
        public static function 
printr($txt) {
            echo 
'<pre>';
            
print_r($txt);
            echo 
'</pre>';
        }
    }
HTML::printr($eenarray);
?>


[ Bericht 29% gewijzigd door #ANONIEM op 26-09-2013 22:35:55 ]
#ANONIEMdonderdag 26 september 2013 @ 22:36
quote:
0s.gif Op donderdag 26 september 2013 22:34 schreef totalvamp het volgende:

[..]

Voordeel van (static) classes en functies :) erg handig voor dingen die je meerdere keren gebruikt.

Mijn favo voor lokaal testen vand data
[ code verwijderd ]

die jat ik even. :P
KomtTijd...donderdag 26 september 2013 @ 22:36
Echt ga een framework gebruiken allemaal. Zoveel onnodige hoofdpijn hier... :P
Lightdonderdag 26 september 2013 @ 22:36
quote:
0s.gif Op donderdag 26 september 2013 22:30 schreef totalvamp het volgende:

[..]
[ code verwijderd ]

Dan zou ik het wel iets uitgebreider maken, al was het maar omdat empty() ook true kan opleveren voor situaties waarbij er wel data (de string "0") aanwezig is. Er zijn meer situaties, maar die lijken me minder van belang voor $_GET en $_POST.
#ANONIEMdonderdag 26 september 2013 @ 22:37
quote:
14s.gif Op donderdag 26 september 2013 22:36 schreef KomtTijd... het volgende:
Echt ga een framework gebruiken allemaal. Zoveel onnodige hoofdpijn hier... :P
Sssssssst ik laat hem langzaam die kant op gaan xD
#ANONIEMdonderdag 26 september 2013 @ 22:37
quote:
14s.gif Op donderdag 26 september 2013 22:36 schreef KomtTijd... het volgende:
Echt ga een framework gebruiken allemaal. Zoveel onnodige hoofdpijn hier... :P
Zijn er eigenlijk al kant en klare frameworks voor dit soort basis dingen? Ik kan er natuurlijk zelf een schrijven maar waarom het wiel opnieuw uitvinden :P (Natuurlijk wel zelf aanvullen)

[ Bericht 1% gewijzigd door #ANONIEM op 26-09-2013 22:37:50 ]
KomtTijd...donderdag 26 september 2013 @ 22:38
quote:
2s.gif Op donderdag 26 september 2013 22:37 schreef d4v1d het volgende:

[..]

Zijn er eigenlijk al kant en klare frameworks voor dit soort basis dingen?
_O- you're kidding I hope?
#ANONIEMdonderdag 26 september 2013 @ 22:38
quote:
10s.gif Op donderdag 26 september 2013 22:38 schreef KomtTijd... het volgende:

[..]

_O- you're kidding I hope?
Oke ik snap hem al :')
Maringodonderdag 26 september 2013 @ 22:38
quote:
10s.gif Op donderdag 26 september 2013 22:38 schreef KomtTijd... het volgende:

[..]

_O- you're kidding I hope?
Dat is precies wat ik dacht toen ik je bericht tevoorschijn zag komen...
#ANONIEMdonderdag 26 september 2013 @ 22:38
Is dat zo'n rare vraag dan? :')
#ANONIEMdonderdag 26 september 2013 @ 22:38
quote:
0s.gif Op donderdag 26 september 2013 22:36 schreef Light het volgende:

[..]

Dan zou ik het wel iets uitgebreider maken, al was het maar omdat empty() ook true kan opleveren voor situaties waarbij er wel data (de string "0") aanwezig is. Er zijn meer situaties, maar die lijken me minder van belang voor $_GET en $_POST.
Het ging om een voorbeeld getypt in dit scherm xD daarnaast wil je 0 wel opvangen, een id kan 0 zijn. Maar je hebt gelijk dat je er meer controles op wilt hebben dan dit.
Maringodonderdag 26 september 2013 @ 22:39
quote:
2s.gif Op donderdag 26 september 2013 22:38 schreef d4v1d het volgende:
Is dat zo'n rare vraag dan? :')
Nou, Google. Plus dat overal tegenwoordig wel een framework voor is.
KomtTijd...donderdag 26 september 2013 @ 22:39
quote:
2s.gif Op donderdag 26 september 2013 22:38 schreef d4v1d het volgende:
Is dat zo'n rare vraag dan? :')
....als je al een jaar met PHP bezig bent en nog nooit van een framework gehoord hebt? Ehja.
#ANONIEMdonderdag 26 september 2013 @ 22:39
quote:
14s.gif Op donderdag 26 september 2013 22:39 schreef KomtTijd... het volgende:

[..]

....als je al een jaar met PHP bezig bent en nog nooit van een framework gehoord hebt? Ehja.
Ik weet prima wat een framework is :')
Lightdonderdag 26 september 2013 @ 22:39
quote:
14s.gif Op donderdag 26 september 2013 22:36 schreef KomtTijd... het volgende:
Echt ga een framework gebruiken allemaal. Zoveel onnodige hoofdpijn hier... :P
Uitzoeken hoe dingen werken kan heel goed zonder framework, is misschien nog wel beter dan met een framework. Voor dingen die op een live website komen, is een framework wel aan te raden. De grootste veiligheidsrisico's zijn dan meteen afgedicht (of je moet een update installeren als er een bug gefixt is).
#ANONIEMdonderdag 26 september 2013 @ 22:40
quote:
2s.gif Op donderdag 26 september 2013 22:39 schreef Maringo het volgende:

[..]

Nou, Google. Plus dat overal tegenwoordig wel een framework voor is.
quote:
14s.gif Op donderdag 26 september 2013 22:39 schreef KomtTijd... het volgende:

[..]

....als je al een jaar met PHP bezig bent en nog nooit van een framework gehoord hebt? Ehja.
dit^

Al is het waarschijnlijk wel handig als je zelf met een framework bouwen begint. Niet omdat je een goed framework gaat maken, maar om de logica erachter te snappen ;)
KomtTijd...donderdag 26 september 2013 @ 22:41
quote:
0s.gif Op donderdag 26 september 2013 22:39 schreef Light het volgende:

[..]

Uitzoeken hoe dingen werken kan heel goed zonder framework, is misschien nog wel beter dan met een framework. Voor dingen die op een live website komen, is een framework wel aan te raden. De grootste veiligheidsrisico's zijn dan meteen afgedicht (of je moet een update installeren als er een bug gefixt is).
Ik ben ook geen tegenstander van beginnen met from scratch programmeren, leer je toch beter de internals van een taal (zoal bijvoorbeeld wat de precieze eigenschappen zijn van een functie als empty(). )
slacker_nldonderdag 26 september 2013 @ 22:45
Bestaat er niet iets als defined in php?

In perl doe je dit:
1
2
3
4
5
6
if (defined $hash{$key}) { 
    print "$key bestaat en heeft als value $hash{$key}";

else {
    print "$key bestaat niet of heeft undef als value";
}

Want is_empty werkt niet als dusdanig.

1
2
3
4
5
6
7
8
<?php
if (array_key_exists($key$hash) && isset($kash[$key])) { 
    print 
"$key bestaat en heeft als value $hash[$key]";

else {
    print 
"of toch anders?"
}
?>


[ Bericht 6% gewijzigd door slacker_nl op 26-09-2013 22:54:05 ]
Lightdonderdag 26 september 2013 @ 22:45
quote:
0s.gif Op donderdag 26 september 2013 22:40 schreef totalvamp het volgende:

Al is het waarschijnlijk wel handig als je zelf met een framework bouwen begint. Niet omdat je een goed framework gaat maken, maar om de logica erachter te snappen ;)
Dat. Om de logica te begrijpen, is het heel geschikt. Zolang je dat framework maar niet gebruikt voor productiecode. :) (En dat geldt voor iedereen.)
#ANONIEMdonderdag 26 september 2013 @ 22:47
quote:
14s.gif Op donderdag 26 september 2013 22:45 schreef Light het volgende:

[..]

Dat. Om de logica te begrijpen, is het heel geschikt. Zolang je dat framework maar niet gebruikt voor productiecode. :) (En dat geldt voor iedereen.)
Ik gebruik mijn eigen voor een script :P
Dit omdat ik een simpel iets nodig had zonder veel overhead en gezeik.
Als ik een site eromheen zou bouwen had ik wel een framework genomen.

(framework is in een dag geschreven :') )

[ Bericht 7% gewijzigd door #ANONIEM op 26-09-2013 22:51:35 ]
Lightdonderdag 26 september 2013 @ 22:51
quote:
0s.gif Op donderdag 26 september 2013 22:45 schreef slacker_nl het volgende:
Bestaat er niet iets als defined in php?

In perl doe je dit:
[ code verwijderd ]

Want is_empty werkt niet als dusdanig.
[ code verwijderd ]

1
2
3
4
5
6
7
8
<?php
$a 
= array();
$a[0] = null;
var_dump(array_key_exists(0$a));
# bool(true)
php var_dump(isset($a[0]));
# bool(false)
?>
#ANONIEMdonderdag 26 september 2013 @ 22:53
quote:
0s.gif Op donderdag 26 september 2013 22:51 schreef Light het volgende:

[..]
[ code verwijderd ]

het is logisch dat array_keys_exists een true geeft hier ;) je controleert op de key niet de waarde :P
slacker_nldonderdag 26 september 2013 @ 22:53
quote:
0s.gif Op donderdag 26 september 2013 22:51 schreef Light het volgende:

[..]
[ code verwijderd ]

Wat ik zei dus :)
Lightdonderdag 26 september 2013 @ 22:57
quote:
0s.gif Op donderdag 26 september 2013 22:53 schreef totalvamp het volgende:

[..]

het is logisch dat array_keys_exists een true geeft hier ;) je controleert op de key niet de waarde :P
array_key_exists() controleert niet op de waarde, dat klopt. :) isset() doet dat wel, die geeft false terug als de waarde null is (en true bij alle andere waarden). Ze zijn dus net niet helemaal uitwisselbaar.
Lightdonderdag 26 september 2013 @ 22:59
quote:
0s.gif Op donderdag 26 september 2013 22:53 schreef slacker_nl het volgende:

[..]

Wat ik zei dus :)
Jouw code kan worden vereenvoudigd door de aanroep van array_key_exists() weg te laten.
slacker_nldonderdag 26 september 2013 @ 23:01
quote:
0s.gif Op donderdag 26 september 2013 22:59 schreef Light het volgende:

[..]

Jouw code kan worden vereenvoudigd door de aanroep van array_key_exists() weg te laten.
En als de key niet bestaat gaat het dan ook niet warnen?

Ja, want kennelijk heb ik het me ooit eens eerder af zitten vragen:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
cat x.php ; php x.php; echo ""
<?php

include_once("/home/xx/sbox/php/etc/env.php");


$array = array("hello" => "world", "how" => "are", "you" => null);

$k = 'test';
print "value :" . $array[$k];
print "isset :" . isset($array[$k]);
print "array_key :" . array_key_exists($k, $array);

?>

PHP Notice:  Undefined index: test in /home/xx/git/private/php/bin/x.php on line 9
Notice: Undefined index: test in /home/xx/git/private/php/bin/x.php on line 9
value :isset :array_key :

Ownee, dat is de value meuk. Owkee, duidelijk.

[ Bericht 27% gewijzigd door slacker_nl op 26-09-2013 23:07:15 ]
Lightdonderdag 26 september 2013 @ 23:03
quote:
0s.gif Op donderdag 26 september 2013 23:01 schreef slacker_nl het volgende:

[..]

En als de key niet bestaat gaat het dan ook niet warnen?
Nope, niet als je isset() gebruikt.
xaban06vrijdag 27 september 2013 @ 22:48
Hoe moet je PHP en HTML apart houden? Vooral met loops vind ik het lastig.

Stukje php, daaroder html, met php er door heen, onleesbaar.
Crutchvrijdag 27 september 2013 @ 23:12
quote:
0s.gif Op vrijdag 27 september 2013 22:48 schreef xaban06 het volgende:
Hoe moet je PHP en HTML apart houden? Vooral met loops vind ik het lastig.

Stukje php, daaroder html, met php er door heen, onleesbaar.
Een template engine gebruiken?
Crutchvrijdag 27 september 2013 @ 23:13
die;