Gewoon 2 queries van maken.quote:Op dinsdag 26 maart 2013 10:45 schreef KomtTijd... het volgende:
Weet iemand of er een manier bestaat om in de tabel zelf op te slaan of een record uitgelezen is met een bepaalde query?
bijv. SELECT * FROM table AND UPDATE table SET uitgelezen = 1
of moet ik daar 2 queries van maken?
Houdt de geest jong.quote:Op dinsdag 26 maart 2013 11:30 schreef KomtTijd... het volgende:
ja ik zit weer te moeilijk te denken voor een simpel probleem geloof ik.
Toevallig gisteren even naar gegoogled. Ben nog niet gelijk geneigd om het te gaan installeren maar zo te zien is het ook op de licentie na weinig anders...quote:Op dinsdag 26 maart 2013 15:47 schreef ursel het volgende:
Mensen hier al met MariaDb gespeeld?
Dit naar aanleiding van onderstaande bericht.
http://webwereld.nl/nieuw(...)n-massaal-mysql.html
Even snel geinstalleerd en database geimporteerd. Applicatie werkt verder gewoon goed naar behoren.quote:Op dinsdag 26 maart 2013 16:24 schreef KomtTijd... het volgende:
[..]
Toevallig gisteren even naar gegoogled. Ben nog niet gelijk geneigd om het te gaan installeren maar zo te zien is het ook op de licentie na weinig anders...
Daarmee ben je er nietquote:Op dinsdag 26 maart 2013 19:25 schreef KomtTijd... het volgende:
beter maak je een aparte tabel met alle mogelijke eigenschappen en een koppeltabel om deze aan dieren te koppelen.
SELECT DISTINCT dier_id FROM koppeltabel WHERE eigenschap_id IN (values van chekboxes)
Dat maakt het ook zo lastig denk ik. Een array in de database opslaan zou het makkelijkste zijn.quote:Op dinsdag 26 maart 2013 19:32 schreef Rockfire het volgende:
[..]
Daarmee ben je er nietHij wil namelijk alleen de dieren waarvan alle eigenschappen geselecteerd zijn. Dus als één van de eigenschappen niet is geselecteerd (in zijn voorbeeld "geeft kopjes" mag hij niet in de lijst voorkomen, dat is bij jou nu wel het geval.
Moet ik nu dus een 3e tabel aanmaken, die de dierentabel koppelt met de kenmerkentabel?quote:Op dinsdag 26 maart 2013 19:40 schreef Rockfire het volgende:
SELECT DISTINCT dier_id FROM koppeltabel WHERE dier_id NOT IN ( SELECT DISTINCT dier_id FROM koppeltabel WHERE eigenschap_id NOT IN ( values van checkboxes ) )
Ik was doorgegaan op het voorbeeld van KomtTijd, het moet niet, maar in jouw voorbeeld kun je nu een eigenschap niet aan meerdere dieren koppelen. Als je het niet doet moet je in mijn query "koppeltabel" vervangen door "eigenschappentabel"quote:Op dinsdag 26 maart 2013 19:50 schreef pascal08 het volgende:
[..]
Moet ik nu dus een 3e tabel aanmaken, die de dierentabel koppelt met de kenmerkentabel?
Wat zou beter zijn voor de prestaties?quote:Op dinsdag 26 maart 2013 19:52 schreef Rockfire het volgende:
[..]
Ik was doorgegaan op het voorbeeld van KomtTijd, het moet niet, maar in jouw voorbeeld kun je nu een eigenschap niet aan meerdere dieren koppelen. Als je het niet doet moet je in mijn query "koppeltabel" vervangen door "eigenschappentabel"
Oké, dan ga ik het eerst proberen zonder koppeltabel aangezien in die 2 tabellen al heb. Mocht dat niet lukken, dan kom ik wel weer terug.quote:Op dinsdag 26 maart 2013 22:21 schreef KomtTijd... het volgende:
Eh. Ik denk dat prestaties op dit moment wel het laatste zijn waar je je druk om hoeft te maken.
Ja.quote:Op dinsdag 26 maart 2013 22:39 schreef KomtTijd... het volgende:
Ik snap niet helemaal hoe je dat voor je ziet. Je wilt meerdere eigenschappen kunnen koppelen aan meerdere dieren?
je hebt nu twee keer de eigenschap "heeft een staart" in de tabel staan. Stel je hebt straks 100 dieren met een staart in de database staan en je wilt de beschrijving van de eigenschap aanpassen. Dan zul je dus 100 records in de database moeten aanpassen, terwijl met een koppeltabel je slechts één record zou hoeven aan te passen.quote:Op dinsdag 26 maart 2013 22:14 schreef pascal08 het volgende:
Ik zie eigenlijk het nut niet van die koppeltabel, want in de eigenschappen tabel kan ik toch ook in meerdere regels aangeven dat een dier meerdere kenmerken heeft?
quote:Op dinsdag 26 maart 2013 22:57 schreef KomtTijd... het volgende:
Dan heb je die koppeltabel dus gewoon nodig.
That makes sense.quote:Op dinsdag 26 maart 2013 22:58 schreef Rockfire het volgende:
[..]
je hebt nu twee keer de eigenschap "heeft een staart" in de tabel staan. Stel je hebt straks 100 dieren met een staart in de database staan en je wilt de beschrijving van de eigenschap aanpassen. Dan zul je dus 100 records in de database moeten aanpassen, terwijl met een koppeltabel je slechts één record zou hoeven aan te passen.
En dan heb ik het nog niet gehad over de mogelijkheid die ontstaat dat je per ongeluk dezelfde eigenschap bij een ander dier anders omschrijft...
quote:Op dinsdag 26 maart 2013 22:57 schreef KomtTijd... het volgende:
Dan heb je die koppeltabel dus gewoon nodig.
Ik ga even de tabellen omgooien.quote:Op dinsdag 26 maart 2013 22:58 schreef Rockfire het volgende:
[..]
je hebt nu twee keer de eigenschap "heeft een staart" in de tabel staan. Stel je hebt straks 100 dieren met een staart in de database staan en je wilt de beschrijving van de eigenschap aanpassen. Dan zul je dus 100 records in de database moeten aanpassen, terwijl met een koppeltabel je slechts één record zou hoeven aan te passen.
En dan heb ik het nog niet gehad over de mogelijkheid die ontstaat dat je per ongeluk dezelfde eigenschap bij een ander dier anders omschrijft...
Inderdaadquote:Op dinsdag 26 maart 2013 23:03 schreef pascal08 het volgende:
[..]
[..]
Ik ga even de tabellen omgooien.
Ik moet dus hebben:
Dierentabel:
Dier_ID-----------Dier
1--------------------Kat
2--------------------Hond
3--------------------Vis
Eigenschappentabel:
Eigenschap------------Eigenschap_ID
Miauwt-------------------1
Jaagt op muizen-----2
Geeft kopjes-----------3
Heeft een staart------4
Blaft-----------------------5
Zwemt--------------------6
Koppeltabel:
Eigenschap_ID----------Dier_ID
1------------------------------1
2------------------------------1
3------------------------------1
4------------------------------1
4------------------------------2
5------------------------------2
6------------------------------3
Op deze manier blijven de omschrijvingen van de eigenschappen veel consequenter. Dat is toch wat jullie bedoelen? Ook denk ik dat een database het fijner zal vinden om te zoeken naar getalletjes in plaats van strings.
Kan wel een array in de db opslaan.quote:Op dinsdag 26 maart 2013 19:37 schreef pascal08 het volgende:
[..]
Dat maakt het ook zo lastig denk ik. Een array in de database opslaan zou het makkelijkste zijn.
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 | <?php $url = 'https://app.halowaypoint.com/en-us/Halo4/Ninja%20pgl/wargames/match-b5bae280fab08275'; $agent= $_SERVER['HTTP_USER_AGENT'] ; $ch = curl_init(); curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); curl_setopt($ch, CURLOPT_VERBOSE, true); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); curl_setopt($ch, CURLOPT_USERAGENT, $agent); curl_setopt($ch, CURLOPT_URL,$url); $result=curl_exec($ch); echo '<xmp>'.$result.'</xmp>'; ?> |
Idd word gelijk door geredirect naar een login. @Darkomen ff wat meer werk in stoppen door o.a. een cookie jar te gebruiken of zoiets als selenium of phantomjs te gebruiken.quote:Op maandag 1 april 2013 15:34 schreef rekenwonder het volgende:
Wat krijg je dan terug? En wat verwacht je terug te krijgen? Log je wel eerst in?
| 1 2 | curl_setopt($ch, CURLOPT_STDERR, fopen('php://output', 'w+')); curl_setopt($ch, CURLOPT_VERBOSE, true); |
| 1 | curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true); |
Een stat pagina.quote:Op maandag 1 april 2013 15:34 schreef rekenwonder het volgende:
Wat krijg je dan terug? En wat verwacht je terug te krijgen? Log je wel eerst in?
| 1 2 3 4 5 6 7 | SELECT `plaatjes`.* FROM `plaatjes` LEFT JOIN `views` ON `views`.`category` = `plaatjes`.`category` WHERE YEAR(`views`.`date`) = YEAR(CURRENT_DATE - INTERVAL 1 MONTH) AND MONTH(`views`.`date`) = MONTH(CURRENT_DATE - INTERVAL 1 MONTH) GROUP BY `views`.`category`, `plaatjes`.`category` ORDER BY `views`.`date` DESC |
| 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 | CREATE TABLE IF NOT EXISTS `plaatjes` ( `id` int(10) unsigned NOT NULL AUTO_INCREMENT, `category` varchar(32) CHARACTER SET latin1 NOT NULL, `filetype` tinyint(3) unsigned NOT NULL, `filename` varchar(40) CHARACTER SET latin1 NOT NULL, `filesize` int(10) unsigned NOT NULL, `height` int(10) unsigned NOT NULL, `width` int(10) unsigned NOT NULL, `animated` enum('j','n') CHARACTER SET latin1 NOT NULL DEFAULT 'n', `views` int(10) unsigned NOT NULL, `lastview` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP, PRIMARY KEY (`id`), KEY `category` (`category`) ) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_bin ROW_FORMAT=DYNAMIC AUTO_INCREMENT=28350 ; -- -------------------------------------------------------- CREATE TABLE IF NOT EXISTS `views` ( `category` varchar(32) NOT NULL, `date` date NOT NULL, `tstamp` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00' ON UPDATE CURRENT_TIMESTAMP, `views` int(10) unsigned NOT NULL, `thumbs` int(10) unsigned NOT NULL, `searches` int(10) unsigned NOT NULL, UNIQUE KEY `category` (`category`,`date`), KEY `date` (`date`) ) ENGINE=MyISAM DEFAULT CHARSET=latin1; |
| 1 2 | 1,SIMPLE,views,index,category,category,37,NULL,35317,Using where; Using index; Using temporary; Using f... 1,SIMPLE,plaatjes,ref,category,category,34,nvt****_anipl.views.category,17 |
Ik sla dagelijks views op basis van de categorieën. In deze views sla ik de datum, timestamp, categorie naam, aantal thumb views, image views en zoek opdrachten op. Deze wil ik gebruiken in combinatie met het plaatjes tabel. Eerst wil ik bv de beste categorieen van de laatste dag/maand opvragen en daarbij wil ik het plaatjes tabel gebruiken om een plaatje (liefst, het best bekeken plaatje) uit te kunnen lezen.quote:Op dinsdag 2 april 2013 20:56 schreef Light het volgende:
Wat probeer je precies te bereiken met je query?
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | SELECT plaatjes.* FROM ( SELECT MAX(plaatjes.id) AS id, plaatjes.category, a.date_viewed FROM ( SELECT category, MAX(date) AS date_viewed FROM views WHERE date BETWEEN date_sub(CURDATE(), INTERVAL '1' month) and CURDATE() GROUP BY category ) a LEFT JOIN plaatjes ON a.category = plaatjes.category GROUP BY plaatjes.category, a.date_viewed ) b LEFT JOIN plaatjes ON b.id = plaatjes.id ORDER BY b.date_viewed DESC LIMIT 5 |
| 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 | <?php function microtime_float() { list($usec, $sec) = explode(" ", microtime()); return ((float)$usec + (float)$sec); } function getRecordsByDate(&$db, $search = '1 DAY') { $sql = "SELECT SQL_NO_CACHE category, MAX(date) AS date_viewed FROM views WHERE date BETWEEN date_sub(CURDATE(), INTERVAL " . $search . ") and CURDATE() AND `category` != '' GROUP BY category LIMIT 5"; $db->q($sql); if ($db->rows() > 0) { $l = array(); foreach ($db->fetch() AS $k=>$v) { $l[$v['category']] = $v['date_viewed']; } if (count($l) > 0) { $sql = "SELECT `plaatjes`.* FROM `plaatjes` WHERE `category` IN ('" . implode("','", array_keys($l)) . "') GROUP BY `plaatjes`.`category` ORDER BY `plaatjes`.`views` DESC"; $db->q($sql); return $db->fetch(); } } return array(); } function getRecordsByDateOld(&$db, $search = '1 DAY') { $sql = 'SELECT SQL_NO_CACHE plaatjes.* FROM ( SELECT MAX(plaatjes.id) AS id, plaatjes.category, a.date_viewed FROM ( SELECT category, MAX(date) AS date_viewed FROM views WHERE date BETWEEN date_sub(CURDATE(), INTERVAL ' . $search . ') and CURDATE() AND `category` != \'\' GROUP BY category ) a LEFT JOIN plaatjes ON a.category = plaatjes.category GROUP BY plaatjes.category, a.date_viewed ) b LEFT JOIN plaatjes ON b.id = plaatjes.id ORDER BY b.date_viewed DESC LIMIT 5'; $db->q($sql); if ($db->rows() > 0) { return $db->fetch(); } else { return array(); } } echo '1 day old function<br />'; $time_start = microtime_float(); for ($x = 0; $x < 100; $x++) { getRecordsByDateOld($db, '1 DAY'); } echo round(microtime_float() - $time_start, 2) . " secs<br />"; echo '1 day new function<br />'; $time_start = microtime_float(); for ($x = 0; $x < 100; $x++) { getRecordsByDate($db, '1 DAY'); } echo round(microtime_float() - $time_start, 2) . " secs<br />"; echo '1 month old function<br />'; $time_start = microtime_float(); for ($x = 0; $x < 100; $x++) { getRecordsByDateOld($db, '1 MONTH'); } echo round(microtime_float() - $time_start, 2) . " secs<br />"; echo '1 month new function<br />'; $time_start = microtime_float(); for ($x = 0; $x < 100; $x++) { getRecordsByDate($db, '1 MONTH'); } echo round(microtime_float() - $time_start, 2) . " secs<br />"; |
| 1 2 3 4 5 6 7 8 | 1 day old function 4.63 secs 1 day new function 4.51 secs 1 month old function 33.67 secs 1 month new function 0.19 secs |
| 1 2 3 4 5 6 7 8 | 1 day old function 55.34 secs 1 day new function 0.19 secs 1 month old function 79.06 secs 1 month new function 0.19 secs |
Omdat je dan pas betrouwbare statistieken hebtquote:Op woensdag 3 april 2013 21:28 schreef Chandler het volgende:
why 10.000? dan is mijn systeem nog wel ff bezig...
quote:Op woensdag 3 april 2013 21:28 schreef Chandler het volgende:
why 10.000? dan is mijn systeem nog wel ff bezig...
100 keer vond ik anders toch aardig wat, zijn dus in totaal 400 queries geweestquote:Op woensdag 3 april 2013 21:33 schreef Rockfire het volgende:
Omdat je dan pas betrouwbare statistieken hebtEén keer een query uitvoeren zegt nog heel weinig over de gemiddelde tijd.
Ik vind 0.19 seconden niet bijzonder snel maar die andere functies wel erg traag. Volgens mij mis je her en der wat indexen.quote:Op woensdag 3 april 2013 21:21 schreef Chandler het volgende:
Ik heb een testje gedaan, en wat blijkt 2 queries zijn sneller
[ code verwijderd ]
uitkomst:
[ code verwijderd ]
met name de maand functie is extreem snel.. waarom? geen idee... nu eens ff online testen.
Online versie vertelt nog een mooier verhaal.
[ code verwijderd ]
In mijn lokale versie zijn er nog geen statistieken van 'vandaag' / 'gisteren' online wel.. Toch raar want vele mensen zeggen dat 1 query altijd sneller is dan 2........
Vele mensen zeggen dat je nooit vooraf moet optimaliseren om datsoort (veelal verkeerde) aannames te voorkomen.quote:Op woensdag 3 april 2013 21:21 schreef Chandler het volgende:
Ik heb een testje gedaan, en wat blijkt 2 queries zijn sneller
Toch raar want vele mensen zeggen dat 1 query altijd sneller is dan 2........
Juist, maar dit was een oplossing voor de vorige query zie code (verbetering van 10 seconden naar 1,5)quote:Op woensdag 3 april 2013 23:37 schreef StM het volgende:
Dat getRecordsByDateOld VEEL langzamer is, is niet gek want je sorteert daar op een virtuele column die het resultaat is van een aggregation in een subquery. Hij kan daar dus nooit een index op toepassen. Sowieso geven de query's ook geen identieke resultaten waardoor je nooit eerlijk kan vergelijken.
| 1 2 3 4 5 6 7 | SELECT `plaatjes`.* FROM `plaatjes` LEFT JOIN `views` ON `views`.`category` = `plaatjes`.`category` WHERE YEAR(`views`.`date`) = YEAR(CURRENT_DATE - INTERVAL 1 MONTH) AND MONTH(`views`.`date`) = MONTH(CURRENT_DATE - INTERVAL 1 MONTH) GROUP BY `views`.`category`, `plaatjes`.`category` ORDER BY `views`.`date` DESC |
Correct, maar in sommige gevallen is het juist wel handig anders kun je heel veel werk dubbel / over gaan doen...quote:Op donderdag 4 april 2013 00:47 schreef KomtTijd... het volgende:
Vele mensen zeggen dat je nooit vooraf moet optimaliseren om datsoort (veelal verkeerde) aannames te voorkomen.
Waar is de filesort op? Zou je een volledige explain hier willen plaatsen? (Of heb ik die gemist...)quote:Op donderdag 4 april 2013 10:19 schreef Chandler het volgende:
[..]
Juist, maar dit was een oplossing voor de vorige query zie code (verbetering van 10 seconden naar 1,5)
[ code verwijderd ]
Het heeft gezorgd voor een versnelling maar ook niet veel zeg maar, bovenstaande query zou goed moeten werken aangezien de indexes goed staan maar werkt toch met een filesorten de 2 losse queries zijn vele malen sneller dus!
[..]
Correct, maar in sommige gevallen is het juist wel handig anders kun je heel veel werk dubbel / over gaan doen...
| 1 2 | 1,SIMPLE,views,index,category,category,37,NULL,35317,Using where; Using index; Using temporary; Using f... 1,SIMPLE,plaatjes,ref,category,category,34,nvt****_anipl.views.category,17 |
| 1 | <?phpPHP include "menu.txt" ; ?> |
Dit is juist een goede manier. Met includes kan je dan (zoals jij al doet gok ik) het menu op elke pagina includen en hem hetzelfde laten zijn..quote:Op vrijdag 5 april 2013 14:48 schreef gerrit098 het volgende:
Ik ben momenteel een website aan het schrijven in HTML(5). nu wilde ik graag dingen uit .txt gaan "includen"
na wat zoek en pruts werk ben ik er al achter dat je als je je html bestand .php noemt gewoon blijft werken en dus
[ code verwijderd ]
naar behoren werkt.
mijn vraag is blijft dit in de toekomst ook handig of zitten hier ook nadelen aan in de toekomst???
| 1 | <?php include 'menu.txt'; ?> |
Hoe bedoel je dat? Of dat in toekomstige versies van PHP zal blijven werken? Daar hoef je je geen zorgen om te maken.quote:Op vrijdag 5 april 2013 14:48 schreef gerrit098 het volgende:
mijn vraag is blijft dit in de toekomst ook handig of zitten hier ook nadelen aan in de toekomst???
Ik doelde er meer op of alles wat je in .html gebruikt ook blijft werken zodra je bestand .php gaat noemen.quote:Op vrijdag 5 april 2013 15:36 schreef KomtTijd... het volgende:
[..]
Hoe bedoel je dat? Of dat in toekomstige versies van PHP zal blijven werken? Daar hoef je je geen zorgen om te maken.
Of dat je zo een praktisch bruikbare website zit te maken? Als je dat wilt kun je beter gewoon een CMS installeren.
[offtopic] probeer CMS made simple.quote:Op vrijdag 5 april 2013 17:51 schreef gerrit098 het volgende:
[..]
Ik doelde er meer op of alles wat je in .html gebruikt ook blijft werken zodra je bestand .php gaat noemen.
maar blijkbaar zal dat geen problemen geven.
Ik heb al "veel" gelezen over CMS maar ik kom dan altijd uit op wp joomla of drupal. en dan krijg ik het niet voor mekaar om een "mooie" site te maken.
wat ik het (denk ik) het liefste heb is een site waar txt bestanden geinclude zijn zodat iemand anders makkelijk de tekst kan aanpassen....
daar ben ik nu dat ook mee bezig en probeer nu een php script te vinden die dit online doen kan, mischien dat iemand hier daar tips over heeft????
Verder wil ik een activiteiten kalander maken waar activiteiten die al geweest zijn automatisch verdwijnen.
iemand daar tips voor???
[offtopic] of probeer wordpressquote:Op vrijdag 5 april 2013 18:06 schreef KomtTijd... het volgende:
[..]
[offtopic] probeer CMS made simple.
Ik heb zelf ook zo'n CMS gebouwd voor een aantal klanten. Als je een CMS wilt maken waarbij klanten hun website aan kunnen passen zoals je in Word werkt (dus met knopjes voor dikgedrukte tekst, onderstreepte tekst, verschillende tekstkleuren enzo) dan moet je naast PHP ook Javascript leren. Met PHP maak je dan gebruik van echo en file_get_contents (niet include, ik leg zo uit waarom), een PHP script dat BB code omzet in HTML (dus dat [ b]tekst[/b ] <b>tekst</b> wordt), een loginscript met cookies en natuurlijk een PHP script dat de tekstbestanden aanpast (fopen, fwrite, fclose).quote:Op vrijdag 5 april 2013 17:51 schreef gerrit098 het volgende:
[..]
Ik doelde er meer op of alles wat je in .html gebruikt ook blijft werken zodra je bestand .php gaat noemen.
maar blijkbaar zal dat geen problemen geven.
Ik heb al "veel" gelezen over CMS maar ik kom dan altijd uit op wp joomla of drupal. en dan krijg ik het niet voor mekaar om een "mooie" site te maken.
wat ik het (denk ik) het liefste heb is een site waar txt bestanden geinclude zijn zodat iemand anders makkelijk de tekst kan aanpassen....
daar ben ik nu dat ook mee bezig en probeer nu een php script te vinden die dit online doen kan, mischien dat iemand hier daar tips over heeft????
Ik had die 100x gemist. 0.0019 is best goed.quote:Op woensdag 3 april 2013 23:24 schreef Chandler het volgende:
De indexen kun je inzien in posts hierboven, daar moet volgens mij weinig mis mee zijn.
0.19 voor 100x deze query uitvoeren? oftewel 0.0019? best snel toch?
| 1 2 3 4 | <?php setlocale(LC_ALL, 'nl_NL'); var_dump(strtotime('zaterdag 6 april 2013')); ?> |
Naar mijn weten is setlocale() voor output, niet voor input.quote:Op zaterdag 6 april 2013 15:18 schreef d4v1d het volgende:
[ code verwijderd ]
Waarom geeft dat FALSE terug en niet een timestamp? Dacht dat dat zo ging..
Dat dacht ik dus ookquote:Op zaterdag 6 april 2013 14:07 schreef Light het volgende:
[..]
Ik had die 100x gemist. 0.0019 is best goed.
Overigens vind ik je microtime_float() functie wat onnodig. Gebruik gewoon mircotime(true) als je de tijd als float wilt.
Dat is het geheim van de smid he.quote:Op zondag 7 april 2013 19:21 schreef Chandler het volgende:
Iemand die bekend is met de techniek achter de facebook timeline en hoe dat in zijn werk gaat? eventueel tutorial? zou daar graag het fijne van willen weten.
Gewoon zelf opzetten zo lastig is dat toch niet?quote:Op zondag 7 april 2013 19:21 schreef Chandler het volgende:
Iemand die bekend is met de techniek achter de facebook timeline en hoe dat in zijn werk gaat? eventueel tutorial? zou daar graag het fijne van willen weten.
Ik wil eerst meer informatie voordat ik ga scriptenquote:Op maandag 8 april 2013 10:45 schreef WyriHaximus het volgende:
Gewoon zelf opzetten zo lastig is dat toch niet?Desnoods bouw je een mediator model waar je de timeline uit trekt en daarna alle related entries opvraagt?
Het gaat mij voornamelijk om het combineren van gegevens (foto's, video's, agenda punten, evenmenten etc etc etc) en die dan met 'reacties' laten weergeven.quote:Op maandag 8 april 2013 10:52 schreef Boze_Appel het volgende:
Even een tutorial van één van de grootste website ter wereld.![]()
Ze zetten trouwens praktisch al hun php om in hiphop-php.
Verder gebruiken ze een combo van push & pulls. De wall zelf gaat via pulls en de chatbalk via pushes bijvoorbeeld. De techniek is allemaal niet zo ingewikkeld, het is meer de enorme hoeveelheid data die het hele Facebook-gebeuren wat ingewikkeld maakt.
Je hoeft de architectuur van Facebook natuurlijk niet te gebruiken om dit voor elkaar te krijgen. Als je alles op 1 server wil draaien, kom je met een paar simpele tabellen voor content en reacties al een heel eind. Wat Facebook voor speciaal maakt is de schaal en het feit dat ze vele datacenters over de wereld hebben verspreid die gegevens met elkaar syncen. Maar voor een bescheiden aantal bezoekers heb je zo'n setup helemaal niet nodig natuurlijk.quote:Op maandag 8 april 2013 11:20 schreef Chandler het volgende:
[..]
Het gaat mij voornamelijk om het combineren van gegevens (foto's, video's, agenda punten, evenmenten etc etc etc) en die dan met 'reacties' laten weergeven.
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 | CREATE TEMPORARY TABLE tmp engine=memory SELECT record_id FROM data LEFT JOIN assets ON data.asset_id = assets.asset_id WHERE uitgelezen = 0 AND assets.active = 1 ORDER BY record_id LIMIT 1000; SELECT * FROM data WHERE record_id IN (SELECT record_id FROM tmp) ; UPDATE data SET uitgelezen = 1 WHERE record_id IN (SELECT record_id FROM tmp) ; DROP TEMPORARY TABLE IF EXISTS tmp; |
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 | CREATE TEMPORARY TABLE tmp engine=memory SELECT <<alle benodigde records>>, 1 AS in_tmp FROM data LEFT JOIN assets ON data.asset_id = assets.asset_id WHERE uitgelezen = 0 AND assets.active = 1 ORDER BY record_id LIMIT 1000; SELECT * FROM tmp ; UPDATE data LEFT JOIN tmp ON data.record_id = tmp.record_id SET uitgelezen = 1 WHERE in_tmp = 1 ; DROP TEMPORARY TABLE IF EXISTS tmp; |
| Forum Opties | |
|---|---|
| Forumhop: | |
| Hop naar: | |