abonnement Unibet Coolblue Bitvavo
pi_42614135
quote:
Op donderdag 12 oktober 2006 16:15 schreef profielnaam het volgende:
hoi, ik probeer een scriptje te maken dat elke 5 uur een bestand download van meerdere servers.
zelf heb ik een html file gemaakt dat om de zoveel tijd een pagina update, maar daarmee wordt 1. het bestand niet automatisch opgeslagen en 2. ik kan geen meerdere sites opgeven waarvan gedownload moet worden.
Ik zou ook willen dat het bestand alleen gedownload wordt als het niet gelijk is aan het bestaande bestand.
Er zijn veel verschillende oplossingen voor jouw probleem. Je geeft een beetje weinig informatie over de configuratie waarop je draait; maar je zou bijvoorbeeld een PHP-script kunnen schrijven dat een bestand opent ala:

1$fp = fopen('http://www.server.tld/bestand.bin', 'r');


En deze vervolgens in een loopje wegschrijft naar een lokaal bestand. Om dit script vervolgens om de 5 uur te laten draaien kun je gebruik maken van crontabs, mits je op een Unix-like systeem draait. De kwestie van het downloaden van meerdere sites zul je zelf moeten implementeren
pi_42614343
quote:
Op donderdag 12 oktober 2006 16:15 schreef profielnaam het volgende:
hoi, ik probeer een scriptje te maken dat elke 5 uur een bestand download van meerdere servers.
zelf heb ik een html file gemaakt dat om de zoveel tijd een pagina update, maar daarmee wordt 1. het bestand niet automatisch opgeslagen en 2. ik kan geen meerdere sites opgeven waarvan gedownload moet worden.
Ik zou ook willen dat het bestand alleen gedownload wordt als het niet gelijk is aan het bestaande bestand.

waar kan ik zulke php code vinden ? of als iemand al een soortgelijk script heeft, zou dat geshared kunnnen worden ?
De snelste manier om te controleren of het bestand dat je wilt downloaden hetzelfde is dan je bestaande bestand is via md5() . Het hele bestand erdoor en controleren met je vorige md5() string. Dit gaat veel sneller dan het ganse bestand te vergelijken. Als het dan niet gelijk is; opnieuw downloaden.

Opslaan kan in een database
pi_42615030
quote:
Op donderdag 12 oktober 2006 16:51 schreef fate het volgende:

[..]

De snelste manier om te controleren of het bestand dat je wilt downloaden hetzelfde is dan je bestaande bestand is via md5() . Het hele bestand erdoor en controleren met je vorige md5() string. Dit gaat veel sneller dan het ganse bestand te vergelijken. Als het dan niet gelijk is; opnieuw downloaden.
Dat is natuurlijk ontzettend nutteloos, omdat je voor md5file() eerst het bestand moet downloaden

Beter maak je gebruik van de HTTP-headers die je vertellen hoe groot het bestand is, en wanneer het voor het laatst gewijzigd is (die laatste kun je niet altijd vertrouwen).
pi_42638184
Ik wil uit een array de maximale key hebben. Een voorbeeld van een array die voor kan komen:

1
2
3
<?php
$array
= array(0 =&gt; "iets", 1 =&gt; "nog iets", 4 =&gt; "anders nog iets?");
?>


De functie count() gaat niet werken, want dat levert de verkeerde waarde op. Dus ik ging met max() experimenteren, maar dat wil ook niet helemaal lukken. Ik had dit gemaakt:

1
2
3
4
5
6
<?php
if(count($array) == 0)
    
$maximum = 0;
else
    
$maximum = ((int) (max($array)));
?>


Maar dit geeft vreemde resultaten. Wie kan mij helpen?
  vrijdag 13 oktober 2006 @ 12:31:05 #230
4159 GI
Nee ik heet geen JOE
pi_42638241
http://nl3.php.net/manual/nl/function.ksort.php
Daar heb je heel veel aan denk ik
  vrijdag 13 oktober 2006 @ 12:33:30 #231
85514 ralfie
!Yvan eht nioj
pi_42638308
max() met een array kijkt naar de waarden van de array, niet naar de keys. Je zult dus eerst deze moeten omwisselen, zoals met array_flip
1
2
3
4
5
6
7
<?php
php
if(count($array) == 0)
    
$maximum = 0;
else
    
$maximum = ((int) (max(array_flip($array))));
?>
pi_42652098
1
2
3
4
5
6
<?php
if(count($array) == 0)
    
$maximum = 0;
else
    
$maximum = ((int) (max(array_keys($array))));
?>

Dan heb je geen last van de nadelen van array_flip.
pi_42653450
Bedankt voor de hulp. Ik ga voor de oplossing van Light, die ziet er het beste uit.

De code documenteert daar zichzelf (maximum van de array_keys van de array) en ziet er wat duidelijker uit dan de array_flip.
  zaterdag 14 oktober 2006 @ 15:02:11 #234
65471 SkaterSam
Lurking Galore
pi_42671071
Ik ben een simpel systeem te bouwen om ingelogde users bij te houden. Dus dan heb ik een tabel, met daarin het userid, een session_stamp (bestaande uit het sessionid, de browsernaam en een steekwoord in één md5 string), de tijd en als laatste het ip adres. Nu controleer ik ten eerste elke keer of de user wel bestaat, door de user tabel te queryen, en ten tweede controleer ik de "live" gegevens met de gegevens in de DB. Nu heb ik daarvoor de volgende query om de dingen uit de DB te halen:

1
2
3
4
5
<?php
$query
= "SELECT l.session_stamp, l.tijd, l.ip_address
              FROM logged_in AS l
              WHERE l.user_id = '"
. $id . "'";
?>

Mijn vraag is nu of ik niet beter op de session stamp kan queryen, omdat die altijd uniek zou moeten zijn (en er tevens de primary key van te maken)? Of kan ik gewoon op id blijven queryen?

Trouwens, klopt het dat de preview van PHP code niet helemaal soepel is? Hij geeft namelijk een enorme grijze balk waar die nummering in staat bij mij...
Let's make life easy
Typo's are the demon spawn from hell !
pi_42671198
@SkaterSam

Het leuke aan SQL is dat je veel checks al in de query zelf kunt verwerken. Sowieso kun je het beste op de sessionid werken en niet op de userid, omdat één user meerdere sessions kan hebben. Mits je een sessionid-systeem maakt dat genoeg verschillende sessionid's kan genereren kan je die idd primary key maken. Je query kan er zo uitzien:

1
2
3
4
5
6
<?php
$query
= "SELECT l.tijd, l.ip_address
              FROM logged_in AS l
              INNER JOIN users AS u ON l.user_id = u.id
              WHERE l.session_stamp = '"
. $sid . "' AND u.id = '" . $userid . "'";
?>


Door die INNER JOIN verplicht de RDMBS dat de session id gerelateerd is aan een bestaande user
  zaterdag 14 oktober 2006 @ 15:17:17 #236
65471 SkaterSam
Lurking Galore
pi_42671379
Ok, ja je hebt inderdaad gelijk met de INNER JOIN, ik heb nog steeds niet echt de "feeling" om dat in een query te kunnen zetten, maar dat moet ik een beetje nog aanleren dus. Ik snapte alleen niet wat je hier mee bedoelde:
quote:
Mits je een sessionid-systeem maakt dat genoeg verschillende sessionid's kan genereren
Ik gebruik verder nog geen dingen erbij, dit zijn de enige checks die ik uitvoer. Dus na de login wordt de data naar de DB geschreven, en dat wordt voortdurend gecontroleerd... Of ben ik nu té simpel bezig?
Let's make life easy
Typo's are the demon spawn from hell !
pi_42671545
quote:
Op zaterdag 14 oktober 2006 15:17 schreef SkaterSam het volgende:
Ok, ja je hebt inderdaad gelijk met de INNER JOIN, ik heb nog steeds niet echt de "feeling" om dat in een query te kunnen zetten, maar dat moet ik een beetje nog aanleren dus. Ik snapte alleen niet wat je hier mee bedoelde:
[..]

Ik gebruik verder nog geen dingen erbij, dit zijn de enige checks die ik uitvoer. Dus na de login wordt de data naar de DB geschreven, en dat wordt voortdurend gecontroleerd... Of ben ik nu té simpel bezig?
Als je een session-systeem schrijft moet je iets hebben dat de session identificeert. Dit is in jouw geval de sessionid als je die @random genereert moet je opletten dat het voor kan komen dat de session id wellicht al bestaat, als het een simpele AUTO_INCREMENT is moet je opletten dat dat niet oneindig door kan blijven gaan.
pi_42671649
Ik ben nou bezig met mijn eigen site aan het omzetten in PHP en mySQL.
Nu staan veel query's midden in de pagina. Ik vind dat niet echt netjes. Stoppen jullie die in een apart bestand of stel ik me aan?
  zaterdag 14 oktober 2006 @ 15:32:02 #239
65471 SkaterSam
Lurking Galore
pi_42671677
Maar hoe vaak komt het voor dat dezelfde sessionid's worden gegenereerd @random? Het betreft trouwens nu nog een systeem waar maar enkele mensen op inloggen... Een stuk of 10 zeg maar, dan is die kans toch miniem...? En met AUTO_INCREMENT bedoel je als ik vanuit de DB een sessionid zou aanmaken?
Let's make life easy
Typo's are the demon spawn from hell !
pi_42672322
quote:
Op zaterdag 14 oktober 2006 15:30 schreef super-muffin het volgende:
Ik ben nou bezig met mijn eigen site aan het omzetten in PHP en mySQL.
Nu staan veel query's midden in de pagina. Ik vind dat niet echt netjes. Stoppen jullie die in een apart bestand of stel ik me aan?
lig er aan: zijn het 20 query's zou ik gaan proberen ze zoveel mogelijk apart in een soort van array te zetten (die boven aan de pagina of in een ander bestand wordt gedefineerd
zijn het er 5 laat ik ze lekker staan
pi_42672565
quote:
Op zaterdag 14 oktober 2006 15:30 schreef super-muffin het volgende:
Ik ben nou bezig met mijn eigen site aan het omzetten in PHP en mySQL.
Nu staan veel query's midden in de pagina. Ik vind dat niet echt netjes. Stoppen jullie die in een apart bestand of stel ik me aan?
Imho is de mooiste oplossing om de logistiek achter een website te scheiden van de presentatie. Wat ik dus meestal doe is een PHP-bestand schrijven waar alle bewerkingen worden uitgevoerd en waarin ik een template laadt die mijn gegevens kan presenteren. Zoiets kun je bewerkstelligen met Smarty.
pi_42672582
quote:
Op zaterdag 14 oktober 2006 15:32 schreef SkaterSam het volgende:
Maar hoe vaak komt het voor dat dezelfde sessionid's worden gegenereerd @random? Het betreft trouwens nu nog een systeem waar maar enkele mensen op inloggen... Een stuk of 10 zeg maar, dan is die kans toch miniem...?
Miniem, maar een check is op z'n minst wel netjes. Als je je sessionid een PRIMARY KEY maakt wordt ie automatisch ook UNIQUE en dan krijg je een foutmelding terug als je een al bestaande session id probeert te inserten, dus daar zou je eventueel op kunnen checken
  zaterdag 14 oktober 2006 @ 16:21:46 #243
12221 Tijn
Powered by MS Paint
pi_42672836
quote:
Op zaterdag 14 oktober 2006 16:09 schreef JeRa het volgende:

[..]

Imho is de mooiste oplossing om de logistiek achter een website te scheiden van de presentatie. Wat ik dus meestal doe is een PHP-bestand schrijven waar alle bewerkingen worden uitgevoerd en waarin ik een template laadt die mijn gegevens kan presenteren. Zoiets kun je bewerkstelligen met Smarty.
Op aanraden van Crazaay (geloof ik) heb ik eens naar CodeIgniter gekeken. Hiermee wordt het je behoorlijk makkelijk gemaakt om een cleane website te maken.
  zaterdag 14 oktober 2006 @ 17:03:18 #244
65471 SkaterSam
Lurking Galore
pi_42673785
quote:
Op zaterdag 14 oktober 2006 16:10 schreef JeRa het volgende:Miniem, maar een check is op z'n minst wel netjes. Als je je sessionid een PRIMARY KEY maakt wordt ie automatisch ook UNIQUE en dan krijg je een foutmelding terug als je een al bestaande session id probeert te inserten, dus daar zou je eventueel op kunnen checken
Ja, maar dat zou dan moeten gebeuren als je inlogt, en niet nadat je al bent ingelogd.
Let's make life easy
Typo's are the demon spawn from hell !
pi_42673994
quote:
Op woensdag 11 oktober 2006 20:34 schreef Swetsenegger het volgende:
Ja dat doet die snippet van Piles ook, werkt inderdaad prima, behalve dat ik nu moet uitvinden hoe ik lege kolommen plak.
[..]

Ja dat is dus mooi kut, want ook DAT moet ik oplossen
lege kolommen kan je toevoegen door een extra <td> in je tabel te zetten... gewoon geen data inzetten
die voorloopnullen kan je misschien oplossen door het ding tussen quotes te outputten? Maar dan zit je daar weer mee
  zaterdag 14 oktober 2006 @ 17:19:18 #246
62215 qu63
..de tijd drinkt..
pi_42674214
quote:
Op woensdag 11 oktober 2006 20:34 schreef Swetsenegger het volgende:
Ja dat is dus mooi kut, want ook DAT moet ik oplossen
gebruik anders deze ` (dus naast het uitroepteken..) voor ieder getal, dan slikt Excel alles
It's Time To Shine
[i]What would life be like without rhethorical questions?[/i]
pi_42680925
quote:
Op zaterdag 14 oktober 2006 16:09 schreef JeRa het volgende:

[..]

Imho is de mooiste oplossing om de logistiek achter een website te scheiden van de presentatie. Wat ik dus meestal doe is een PHP-bestand schrijven waar alle bewerkingen worden uitgevoerd en waarin ik een template laadt die mijn gegevens kan presenteren. Zoiets kun je bewerkstelligen met Smarty.
Aha, wel een goeie om te bookmarken.

Nu gaat het om een redelijk simpele site, en ik ben ook nog maar een kleine beginneling
pi_42682302
quote:
Op woensdag 11 oktober 2006 20:34 schreef Swetsenegger het volgende:
[..]
Ja dat is dus mooi kut, want ook DAT moet ik oplossen
De afhandeling van CSV door Excel is behoorlijk brak. De voorloopnullen zijn er nog wel doorheen te krijgen, maar een string met een komma erin wordt opgesplitst in 2 cellen, zelfs als de string tussen "" staat. dat kan je weer oplossen door een tab als schijdingsteken te gebruiken en alle tabs in de strings door een spatie te vervangen.
Je kunt ook een html pagina met een tabel genereren en die laten downloaden als .xls, dat slikt Excel ook.
Wil iedereen die in telekinese gelooft nu mijn hand op steken?
| Foto's van toen en nu | Icons | Whatpulse keyboard | .NET developer? |
pi_42688150
quote:
Op zaterdag 14 oktober 2006 15:30 schreef super-muffin het volgende:
Ik ben nou bezig met mijn eigen site aan het omzetten in PHP en mySQL.
Nu staan veel query's midden in de pagina. Ik vind dat niet echt netjes. Stoppen jullie die in een apart bestand of stel ik me aan?
Uiteindelijk geniet het de voorkeur om als uitgangspunt het model 2 paradigma te nemen. Dat betekent onder andere dat je inderdaad dus geen enkele business code in je HTML plaatst. In plaats daarvan gebruik je een templating systeem, zoals JeRa met Smarty al aan heeft gegeven. Uiteraard hangt het af van de omvang van een website in hoeverre een dergelijke benadering echt noodzakelijk is. In ieder geval is het een goed uitgangspunt om je ontwikkel- en daarbij je abstractieniveau te verhogen wat zeker noodzakelijk is, wanneer je begint aan het ontwikkelen van webapplicaties.
pi_42688288
quote:
Op zaterdag 14 oktober 2006 15:32 schreef SkaterSam het volgende:
Maar hoe vaak komt het voor dat dezelfde sessionid's worden gegenereerd @random? Het betreft trouwens nu nog een systeem waar maar enkele mensen op inloggen... Een stuk of 10 zeg maar, dan is die kans toch miniem...? En met AUTO_INCREMENT bedoel je als ik vanuit de DB een sessionid zou aanmaken?
Die kans mag dan wel miniem zijn, maar de kans is aanwezig en dat lijkt mij al voldoende om deze uit te sluiten. Stel dàt het gebeurt; dat wil je niet. Een oplossing kan dan zijn om middels een soort lus-systeem een random key te genereren, waarbij hij telkens blijft genereren totdat een key is gegenereerd welke nog niet voorkomt in de tabel. In 99% van de gevallen al de lus slechts één maal doorlopen worden, maar mocht er bij toeval toch een key worden gegenereerd die reeds bestaat, dan maakt ie weer een nieuwe.

Echter, gebruik maken van de auto increment functie van de database is ook een optie. Je genereert dan een sleutel en plaatst daar bijvoorbeeld de nieuw aan te maken record ID achter (of voor). Op die manier is je session key sowieso altijd uniek binnen de tabel (en het systeem).
abonnement Unibet Coolblue Bitvavo
Forum Opties
Forumhop:
Hop naar:
(afkorting, bv 'KLB')