Avatar billede alexanderss Nybegynder
17. april 2009 - 09:15 Der er 14 kommentarer

Cron job + PHP script resulterer i forkert værdi i MySQL

Hej!
Nedenunder har jeg et script, som henter valutakurser fra Yahoo Finance.
Jeg henter valutakurser ved f.eks. convert.php?id=1&from=USD&to=EUR
Jeg vil gerne have mit script at opdatere hvert 5 min. og jeg henter scriptet ved kommandoen:

wget -O - -q http://blalba.dk/convert.php?id=1&from=USD&to=EUR

Hvis jeg bruger scriptet i en browser så får jeg værdierne ind i databasen, men ved cron jobbet, så resulterer det i N/A i koeb og salg.

<html>
<head>
<title>FULDFØRT!</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">

</head>

<body leftmargin="0" topmargin="0" marginwidth="0" marginheight="0">

<?php include "connect.php"; ?>

<?php
$from = $_GET['from'];
$to = $_GET['to'];

$url = "http://download.finance.yahoo.com/d/quotes.csv?s=".$from.$to."=X&f=sl1d1t1ba&e=.csv";
$fp = fopen($url, 'r');
$data = fgetcsv($fp, 1000);

$salg = $data['4'];
$koeb = $data['5'];


mysql_query("UPDATE currency SET salg = '$salg', koeb = '$koeb' WHERE id = '$_GET[id]'") or die(mysql_error());

      ?>



</body>
</html>
Avatar billede olebole Juniormester
17. april 2009 - 09:38 #1
<ole>

Umiddelbart ser det ud, somom du har glemt et & i URL'en. Prøv:
    $url = "http://download.finance.yahoo.com/d/quotes.csv?s=".$from."&".$to."=X&f=sl1d1t1ba&e=.csv";

Det passer dog heller ikke med det, du skriver i spørgsmålet:
    wget -O - -q http://blalba.dk/convert.php?id=1&from=USD&to=EUR

- så gad vide, hvad der egentlig skal stå?  =)

/mvh
</bole>
Avatar billede alexanderss Nybegynder
17. april 2009 - 10:13 #2
Hej!
Selve konstruktionen af Yahoo url'en er rigtig.. Den kunne f.eks. være:

http://download.finance.yahoo.com/d/quotes.csv?s=USDEUR=X&f=sl1d1t1ba&e=.csv

Du kan selv prøve at downloade den.
Avatar billede olebole Juniormester
17. april 2009 - 10:18 #3
IE7 kan ikke åbne filen. FF kan godt. Something's fishy  ;o)
Avatar billede alexanderss Nybegynder
17. april 2009 - 13:38 #4
Jeg er bange for at det er sådan man får fat i kursene :S -- Har du nogen forslag til hvordan jeg kan gøre det ellers??
Avatar billede olebole Juniormester
17. april 2009 - 14:06 #5
Ikke til at åbne en defekt fil - og det kunne det kraftigt tyde på, den er. I hvertfald kan vi jo slå fast, at hverken din server eller IE kan anvende den, som den er
Avatar billede olebole Juniormester
17. april 2009 - 14:23 #6
Nu har jeg lige forsøgt at åbne en socket fra PHP mod dokumentet - og der går det helt fint med at hente data ... Hmmmmm
Avatar billede alexanderss Nybegynder
17. april 2009 - 15:28 #7
hehe ja præcis - det er vildt underligt?? .. Jeg tænker lidt om man kunne gennem informationerne i en XML-fil eller en .dat file istedet for at bruge MySQL?
Avatar billede olebole Juniormester
18. april 2009 - 14:44 #8
Jamen, det hjælper dig ikke noget. Når serveren ikke kan læse filen under cronjobbet, er det jo ligegyldigt, hvordan du prøver at gemme de data, serveren ikke kan finde  ;o)
Avatar billede alexanderss Nybegynder
18. april 2009 - 15:11 #9
Og det er URL'en den er i vejen med og ikke scriptet??
Avatar billede olebole Juniormester
18. april 2009 - 15:23 #10
Nej, det er vist ingen af delene - men jeg ved ikke umiddelbart, hvad det er, der er galt  =)
Avatar billede alexanderss Nybegynder
20. april 2009 - 09:06 #11
Jeg har lige tjekket min error.log den giver dette:

[Thu Apr 16 22:40:02 2009] [error] [client 62.75.165.171] PHP Notice: Undefined index: from in /var/www/vhosts/***.com/httpdocs/convertny.php on line 16
[Thu Apr 16 22:40:02 2009] [error] [client 62.75.165.171] PHP Notice: Undefined index: to in /var/www/vhosts/***.com/httpdocs/convertny.php on line 17
Avatar billede olebole Juniormester
20. april 2009 - 09:17 #12
Der er kun én af os to, der ved, hvad der står på linjerne 16 og 17 i 'convertny.php' - og dermed, hvad fejlen omhandler  ;o)
Avatar billede alexanderss Nybegynder
20. april 2009 - 09:35 #13
Der står på linje 16 og 17:

$from = $_GET['from'];
$to = $_GET['to'];
Avatar billede olebole Juniormester
20. april 2009 - 09:53 #14
Hmmmmm ... webserveren er jo ikke som sådan i spil ved afviklingen af et cronjob, så du kan zq nok slet ikke medsende en query. Så skal du over i noget command line halløj med parametre - men, hvordan du lige får afviklet dét, ved jeg ikke.

Hvad er overhovedet idéen med at medsende de variabler? Hvorfor ikke bare lave et specielt dokument, som kun afvikles ved crons?
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester