Uh het is Head first php & mysql.quote:
Nee alleen HTML en CSS. Ik wil alleen een website maken die een database gebruikt voor iets dus wil het ook wat snappen. Daarnaast moet ik sowieso voor volgend semester MySQL gebruiken en waarschijnlijk willen ze dat je dan Access gebruikt, maar daar heb ik geen zin in.quote:
Dan zou ik me nog even helemaal niet bezighouden met databasetoegang en eerst zorgen dat je weet hoe variabelen, if-statements, loops, functies, objecten etc. werken.quote:
Head first het raam uit met dat boek. Het is uit 2008!! Dat is vijf jaar oud!quote:Op zondag 19 mei 2013 13:59 schreef DutchErrorist het volgende:
[..]
Uh het is Head first php & mysql.
Neequote:Op zondag 19 mei 2013 14:02 schreef papernote het volgende:
[..]
Head first het raam uit met dat boek. Het is uit 2008!! Dat is vijf jaar oud!
Komt wel goedquote:Op zondag 19 mei 2013 14:01 schreef Tijn het volgende:
[..]
Dan zou ik me nog even helemaal niet bezighouden met databasetoegang en eerst zorgen dat je weet hoe variabelen, if-statements, loops, functies, objecten etc. werken.
Wat je nu aan het doen vent heeft niks met de basics te maken.quote:Op zondag 19 mei 2013 14:15 schreef DutchErrorist het volgende:
[..]
Het is handig om de basics te begrijpen.
PHP is niet bedoelt om 24/7 te draaien. Dan kun je beter een andere programmeertaal gaan gebruiken. Bijvoorbeeld een Java of C++ applicatie maken die continue draait.quote:Op maandag 20 mei 2013 09:08 schreef Chandler het volgende:
Heeft er iemand ook ervaring met het laten draaien van php scripts in de achtergrond (soortement van cronjob maar dan een script) die 24/7 draait? ik wil namelijk een service gaan maken waarbij ik een web interface ga schrijven en een cronjob wil draaien die het werk op de achtergrond doet.
Wil weten hoe stabiel dat is
Wil ook weten dat wanneer het script gestopt is/wordt ik deze weer automatisch kan starten
Idd, bash of perlquote:Op maandag 20 mei 2013 09:19 schreef papernote het volgende:
[..]
PHP is niet bedoelt om 24/7 te draaien. Dan kun je beter een andere programmeertaal gaan gebruiken. Bijvoorbeeld een Java of C++ applicatie maken die continue draait.
Nogmaals, daar heb ik geen kaas van gegetenquote:
http://symcbean.blogspot.(...)nning-processes.htmlquote:Op maandag 20 mei 2013 09:23 schreef Chandler het volgende:
Juist, maar die kennis heb ik dus niet in huis. Maar kun je mij vertellen waarom niet? of iets er niet voor bedoeld is is natuurlijk heel wat anders of het wel/niet kan met de redenen daarvan
Dan leer je het toch? Je kan PHP, dan kom je talen tegen waar het allemaal net iets logischer is.quote:Op maandag 20 mei 2013 09:28 schreef Chandler het volgende:
Nogmaals, daar heb ik geen kaas van gegetenen heb nu al een leuk scriptje dat dagen kan draaien en zijn ding kan doen, maar daar willen we nu een interface omheen gaan schrijven om bepaalde processen te starten/stoppen etc.
Totdat je ergens iets vergeet.quote:Op maandag 20 mei 2013 09:38 schreef Chandler het volgende:
Ik zal het doornemen!
-edit-
Staat niet dat het niet kan, wel dat het niet handig is ivm afbreken van het script door de server, veel gebruik van systeem resources etc. Maar dat laatste ben ik niet bang voor aangezien ik het script gebruik voor een specifiek iets... en na iedere actie het geheugen weer 100% terug geef..
En je infinite-running script zo af en toe via een cronjob aanzetten ipv continu laten draaien is geen optie?quote:Het afbreken van het script is wel een vervelend punt vandaar dat ik een oplossing hiervoor zoek, eventueel een cronjob die iedere minuut een check doet of het script nog draait en is dit niet het geval dan het script weer aanroepen zodat het weer verder kan gaan met draaien!
Of nog erger: totdat PHP iets vergeet en je er überhaupt niets aan kunt doen.quote:
Mooi, maar wil nog niet zeggen dat ik voor 1 iets gelijk een nieuwe taal moet gaan leren, daar heb ik helaas geen tijd / prioriteit voor..quote:Op maandag 20 mei 2013 09:55 schreef slacker_nl het volgende:
[..]
Dan leer je het toch? Je kan PHP, dan kom je talen tegen waar het allemaal net iets logischer is.
Daar kom je snel genoeg achter met xdebugquote:
Tuurlijk is dat wel een optie!quote:En je infinite-running script zo af en toe via een cronjob aanzetten ipv continu laten draaien is geen optie?
PHP iets vergeet? kun je dat eens uitleggen? maar om het script te stoppen zijn er dan nog aantal andere mogelijkheden om het script te stoppen (via database, via apc, via bestand, noem maar op).quote:Op maandag 20 mei 2013 11:03 schreef papernote het volgende:
[..]
Of nog erger: totdat PHP iets vergeet en je er überhaupt niets aan kunt doen.
Inderdaad een goed idee! maar dan heb je geen pid nodig hoorquote:Op maandag 20 mei 2013 14:43 schreef xaban06 het volgende:
Je zou bij het starten van je script de pid weg kunnen schrijven naar een bestand. Met een cronjob check je of deze nog draait, zo niet: starten.
Of je herstart 'm sowieso ieder uur oid.
Daar ben ik het dan ook wel mee eens!quote:Op maandag 20 mei 2013 17:20 schreef Tijn het volgende:
Maar waarom doet het script niet gewoon wat-ie moet doen en stopt-ie daarna, om vervolgens (bv door cron of door zichzelf) even later weer opnieuw te starten? Dat is toch een veel beter idee dan iets met een infinite loop?
Een gebruiker is iemand die een job invoert op de site, zie vorige bewerkte post... hopelijk een stuk duidelijker.quote:
Was ik al bang voor, maar je ziet toch wel het gevolg van het invullen van de database tabellen? of moet ik het even voor je voormaken? zodat je zo'n 9000 url's in een overzicht krijgtquote:Op dinsdag 21 mei 2013 19:38 schreef boem-dikkie het volgende:
Ik snap echt helemaal niks van je verhaal.
Waarom doe je alles in 1 table? Da's toch niet meer bij te houden?quote:Op dinsdag 21 mei 2013 19:04 schreef Chandler het volgende:
Hoe zorg je dat een op de achtergrond lopend proces die (bv websites scant) niet door 1 gebruiker helemaal wordt overgenomen? maar netjes de taken over alle gebruikers verdeeld?
Wat is nou de juiste manier van aanpakken? iedere actieve user qua datetime nalopen op wie het laatste en het langst geleden is gescanned? hoe doet google dat? en is daar informatie over te lezen? heb al gezocht over threads, queues etc maar kon niet echt iets vinden waar ik wijzer van werd.
Voorbeeld:
Stel ik heb 2 gebruikers die websites laten scannen.
User 1 - > website.nl
User 2 -> website.com
Nu laad ik eerst user 1 en process de eerste pagina, daaruit haal ik alle links (36)
Daarna laad ik user 2 en process de eerste pagina, daaruit haal ik alle links (15).
In het tabel staat het nu zo
id 1 -> user 1 pagina 1
id 2 -> user 2 pagina 1
id 3 t/m 39 -> user 1 vervolg pagina
id 40 t/m 55 -> user 2 vervolg pagina
Dus als ik door ga met scannen gebeurd er dit.
user 1 laad de volgende pagina's in queue (3 t/m 39) en haalt daaruit 300 pagina's
user 2 laad de volgende pagina's in queue (40 t/m 55) en haalt daaruit 500 pagina's
tabel ziet er nu zo uit (vervolg)
id 56 t/m 356 -> user 1 vervolg pagina's
id 367 t/m 867 -> user 2 vervolg pagina's
user 1 laad de volgende pagina's in queue (56 t/m 356) en haalt daaruit 3000 pagina's
user 2 laad de volgende pagina's in queue (40 t/m 55) en haalt daaruit 5000 pagina's
tabel ziet er nu zo uit (vervolg) etc
id 868 t/m 3868 -> user 1 vervolg pagina's
id 3869 t/m 8869 -> user 2 vervolg pagina's
etc etc etc
Zoals je nu ziet wordt de verhouding erg scheef tussen het inlezen en het toevoegen aan de queue, dus mijn vraag is hoe ik dit beter kan oplossen?
Correctquote:Op dinsdag 21 mei 2013 19:53 schreef Crutch het volgende:
Dus ref_id is de id met de url van de pagina waarin de url gevonden is?
Oftewel z'n 'parent'-pagina?
Dat is dus het probleem, ik zou liever zien dat ik bv per gebruiker 1 url uitlees, daarvan de links in de database invoer en op ga naar de volgende user (job) en daarvan 1 url uitlees en etc etc etc..quote:Op dinsdag 21 mei 2013 19:57 schreef Crutch het volgende:
Misschien kun je een tabel met 'tasks' maken.
Als een thread dan klaar is met lezen, steelt hij een aantal taken van de andere user die nog bezig is. And so on.
Nee klopt maar het zou mooi zijn als ik de een een url kon laten opvragen, die verwerken en dan de url van de volgende opvragen ongeacht hoe lang de queue is...quote:Op dinsdag 21 mei 2013 20:08 schreef Crutch het volgende:
Dan verdeel je geen taken, maar krijgen beide users vanaf het begin een specifiek domein en blijven altijd de onderliggende pagina's en url die aanvankelijk uit dat domein gekomen zijn scannen.
Oftewel; ik denk niet dat wat jij wil kan zonder dat de processen scheef gaan lopen, want ze nemen elkaar in principe geen werk uit handen dus is er geen balans.
poehhhhhh.....quote:Op dinsdag 21 mei 2013 20:13 schreef Chandler het volgende:
[..]
Nee klopt maar het zou mooi zijn als ik de een een url kon laten opvragen, die verwerken en dan de url van de volgende opvragen ongeacht hoe lang de queue is...
Dat bedoel ik, dus als ik het op deze manier doe moet ik OF voor iedere job een apart script laten lopen OF een script maken die jobs netjes verdeeld en ongeacht de lengte van de queue de url's verwerkt...quote:Op dinsdag 21 mei 2013 20:21 schreef Crutch het volgende:
[..]
poehhhhhh.....
Dan zou je moeten bepalen wat een url is en wat een url is komende uit zo'n 'parent'-url; eenmaal begonnen loop je het risico dat er geen eind aan het scannen komt, neem bijvoorbeeld wikipedia.
Je queue kan dan wel eens exponentieel oplopen, interessant wel, maar ook dweilen met de kraan open.
Ok,quote:Op woensdag 22 mei 2013 08:48 schreef Maringo het volgende:
Wat perspectief is misschien ook handig. Om hoeveel websites gaat het? Hoeveel user? Hoe groot zijn de websites?
Daar ga ik natuurlijk ook niet vanuitquote:En op de vraag hier Google het doet, weet alleen Google het antwoord. Maar ga er vanuit dat hun niet 1 job per keer laten draaien.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 | 4 klanten die informatie willen invoeren Klant A -> wil www.kleinewebsite.nl uitlezen Klant B -> wil www.google.com uitlezen Klant C -> wil www.anderekleinesite.nl uitlezen Klant D -> wil www.fok.nl uitlezen Eerste run; Klant A leest site en vind 50 links = ID 1 t/m 50 (tijd 1 seconde) Klant B leest site en vind 500 links = ID 51 t/m 551 (tijd 1 seconde) Klant C leest site en vind 10 links = ID 551 t/m 561 (tijd 1 seconde) Klant D leest site en vind 4 links = ID 562 t/m 566 (tijd 1 seconde) Tweede run Klant A leest volgende links uit en vind 500 links in de 50 uitgelezen links = ID 567 t/m 1067 (tijd 50 seconde) Klant B leest volgende links uit en vind 50000 links in de 500 uitgelezen links = ID 1068 t/m 6068 (tijd 4 minuten) Klant C leest volgende links uit en vind 200 links in de 10 uitgelezen links = ID 6069 t/m 6269 (tijd 1 minuut) Klant D leest volgende links uit en vind 20 links in de 4 uitgelezen links = ID 6270 t/m 6280 (tijd 20 seconden) Derde run; Klant A leest volgende links uit en vind 5000 links in de 500 uitgelezen links = ID 6281 t/m 12281 (tijd 4 minuten) Klant B leest volgende links uit en vind 500000 links in de 50000 uitgelezen links = ID 12281 t/m 512281 (tijd 66 uur) Klant C leest volgende links uit en vind 2000 links in de 200 uitgelezen links = ID 512282 t/m 514282 (tijd 2 minuten) Klant D leest volgende links uit en vind 5 links in de 20 uitgelezen links = ID 514282 t/m 514287 (tijd 25 seconden) |
Ik zou gewoon queue's maken. Je hebt verschillende q-runners die een zooi links uitlezen. Onafhankelijk vd gebruiker.quote:Op woensdag 22 mei 2013 09:10 schreef Chandler het volgende:
[..]
Ok,
5 users, 5 sitesen hoe groot de websites zijn maakt op zich weinig uit, de ene heeft 20 pagina's de andere 20.000.000
Een ander voorbeeld: Stel er zijn mensen die op youtube video's uploaden (LOL, wie doet dat nou?) en youtube kan maar 1 video per keer converteren!. Er is dan een wachtrij waarin video's gezet worden. Opeens is er een gebruiker die 20 video's toevoegt (speeltijd: 6000 uur) en deze komen allemaal in de wachtrij, daarna komt er 1 gebruiker en die upload een videotje van 30 seconden. Nu moet deze laatste gebruiker wachten totdat de 20 video's van de vorige gebruiker is voltooid, terwijl het eerlijker zou zijn als er van de ene gebruiker 1 video verwerkt wordt en daarna die van de ander en etc etc etc..
Duidelijker?![]()
Maar uit de respons blijkt dat er blijkbaar niemand hier gewerkt heeft aan zo'n systeem![]()
Even een grof voorbeeld; gebruiker B die dus zorgt dat andere websites ERG lang moeten wachten voordat ze klaar.
[..]
Daar ga ik natuurlijk ook niet vanuitmaar er zijn genoeg sites die dit soort zaken regelen met 1 job controller oid!? zie iets beter geschetst voorbeeld;
[ code verwijderd ]
Alles is fictief maar laat zien dat 1 gebruiker dus de queue erg lang in gebruik kan nemen terwijl het eerlijker zou zijn als ik per gebruiker per ronde 1 link uitlees oid?!
Mocht iemand leesvoer hebben dan zie ik die graag gepost!
Kun je dat iets breder uitleggen? q-runners? zal eens googlen!quote:Op woensdag 22 mei 2013 09:38 schreef slacker_nl het volgende:
[..]
Ik zou gewoon queue's maken. Je hebt verschillende q-runners die een zooi links uitlezen. Onafhankelijk vd gebruiker.
Waarom zou dat eerlijker zijn? Gewoon first in, first out lijkt me juist het toonbeeld van eerlijkheid.quote:Op woensdag 22 mei 2013 09:10 schreef Chandler het volgende:
[..]
Opeens is er een gebruiker die 20 video's toevoegt (speeltijd: 6000 uur) en deze komen allemaal in de wachtrij, daarna komt er 1 gebruiker en die upload een videotje van 30 seconden. Nu moet deze laatste gebruiker wachten totdat de 20 video's van de vorige gebruiker is voltooid, terwijl het eerlijker zou zijn als er van de ene gebruiker 1 video verwerkt wordt en daarna die van de ander en etc etc etc..
Je hebt een queue, daarin staan je links (of verwijzingen ernaar), en je hebt een queue runner. Dan pakt je q-runner een zut links, tagged de queue (zodat andere runners niet dezelfde links gaan ophalen), processed een qitem, en sluit spul af. Voordeel is dat je meerdere queue-runners kan hebben, simultaan kan draaien, je hoeft niet te kijken naar de gebruiker, maar je pakt gewoon shit op wat in de queue staat. Is er niks, dan draait de qrunner niet (of heel kort), is er veel, dan pakt ie alles in batches op en doet ie z'n ding.quote:Op woensdag 22 mei 2013 09:41 schreef Chandler het volgende:
[..]
Kun je dat iets breder uitleggen? q-runners? zal eens googlen!
Omdat iemand op zo'n manier kan zorgen dat hij 3 dagen de site voor zch aan het werk heeft en de ander daarna pas zijn job kan doen... en daarvoor wil ik dus een passende oplossing vinden..quote:Op woensdag 22 mei 2013 09:49 schreef Tijn het volgende:
Waarom zou dat eerlijker zijn? Gewoon first in, first out lijkt me juist het toonbeeld van eerlijkheid.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 | array( 1 => array ( "name" => "user1", "websites" => array ( 1 => "website1a", 2 => "website1b", 3 => "website1c" ) ), 2 => array ( "name" => "user2", "websites" => array ( 1 => "website2a" ) ), 3 => array ( "name" => "user3", "websites" => array ( 1 => "website3a", 2 => "website3b" ) ) ); |
Forum Opties | |
---|---|
Forumhop: | |
Hop naar: |