Avatar billede alexanderss Nybegynder
26. august 2008 - 18:22 Der er 15 kommentarer

Fejl ved Cron job..

Scriptet er følgende:
<?php include_once("connect.php"); ?>

<?php
    function get_conversion($cur_from,$cur_to){
            if(strlen($cur_from)==0){
                $cur_from = "USD";
            }
            if(strlen($cur_to)==0){
                $cur_from = "PHP";
            }
            $host="download.finance.yahoo.com";
            $fp = @fsockopen($host, 80, $errno, $errstr, 30);
            if (!$fp)
            {
                $errorstr="$errstr ($errno)<br />\n";
                return false;
            }
            else
            {
                $file="/d/quotes.csv";
                $str = "?s=".$cur_from.$cur_to."=X&f=sl1d1t1ba&e=.csv";
                $out = "GET ".$file.$str." HTTP/1.0\r\n";
                $out .= "Host: download.finance.yahoo.com\r\n";
                $out .= "Connection: Close\r\n\r\n";
                @fputs($fp, $out);
                while (!@feof($fp))
                {
                    $data .= @fgets($fp, 128);
                }
                @fclose($fp);
                @preg_match("/^(.*?)\r?\n\r?\n(.*)/s", $data, $match);
                $data =$match[2];
                $search = array ("'<script[^>]*?>.*?</script>'si","'<[\/\!]*?[^<>]*?>'si","'([\r\n])[\s]+'","'&(quot|#34);'i","'&(amp|#38);'i","'&(lt|#60);'i","'&(gt|#62);'i","'&(nbsp|#160);'i","'&(iexcl|#161);'i","'&(cent|#162);'i","'&(pound|#163);'i","'&(copy|#169);'i","'&#(\d+);'e");
                $replace = array ("","","\\1","\"","&","<",">"," ",chr(161),chr(162),chr(163),chr(169),"chr(\\1)");
                $data = @preg_replace($search, $replace, $data);
                $result = split(",",$data);
                return $result[1];
            }//else
    }//end get_conversion
   
    $x = get_conversion($_GET['from'],$_GET['to']);
    $vaerdi = $x * $_GET['val'];
   
    // Posting til MySQL

    {
        mysql_query("UPDATE valutaliste SET vaerdi = '$vaerdi' WHERE id = '$_GET[id]'") or die(mysql_error());
        print "<b>Fuldført.</b>";
    }
   
    // convert.php?id=1&val=1&from=USD&to=EUR
   
       
    ?>

Og bliver f.eks. hentet ved convert.php?id=1&val=1&from=USD&to=EUR...
Når jeg indtaster URL'en virker det og den skriver til databasen, men med cron jobbet resulterer det i at værdierne bliver 0, og jeg får følgende fejl fra error_log:

[Tue Aug 26 18:06:53 2008] [error] [client 93.160.112.227] PHP Notice: Undefined index: from in /var/www/vhosts/dolarcambio.es/httpdocs/convert.php on line 41
[Tue Aug 26 18:06:53 2008] [error] [client 93.160.112.227] PHP Notice: Undefined index: to in /var/www/vhosts/dolarcambio.es/httpdocs/convert.php on line 41
[Tue Aug 26 18:06:53 2008] [error] [client 93.160.112.227] PHP Notice: Undefined variable: data in /var/www/vhosts/dolarcambio.es/httpdocs/convert.php on line 28
[Tue Aug 26 18:06:53 2008] [error] [client 93.160.112.227] PHP Notice: Undefined index: val in /var/www/vhosts/dolarcambio.es/httpdocs/convert.php on line 42
[Tue Aug 26 18:06:53 2008] [error] [client 93.160.112.227] PHP Notice: Undefined index: id in /var/www/vhosts/dolarcambio.es/httpdocs/convert.php on line 47
Avatar billede jakobdo Ekspert
26. august 2008 - 18:40 #1
Hvad er linje 41, 28, 42 og 47 ?
Avatar billede jakobdo Ekspert
26. august 2008 - 18:42 #2
I stedet for:
function get_conversion($cur_from,$cur_to){
            if(strlen($cur_from)==0){
                $cur_from = "USD";
            }
            if(strlen($cur_to)==0){
                $cur_from = "PHP";
            }
Kan du lave:
function get_conversion($cur_from='USD',$cur_to='PHP'){
Avatar billede jakobdo Ekspert
26. august 2008 - 18:44 #3
Mangler du ikke et & imellem disse 2:

//DIN
$str = "?s=".$cur_from.$cur_to."=X&f=sl1d1t1ba&e=.csv";
//MIN
$str = "?s=".$cur_from."&".$cur_to."=X&f=sl1d1t1ba&e=.csv";
Avatar billede jakobdo Ekspert
26. august 2008 - 18:46 #4
Og jeg har så lige testet, og nej, der skal ikke & imellem :o)
Avatar billede alexanderss Nybegynder
26. august 2008 - 18:58 #5
Hej Jakob!
Det hjalp ikke lige udmiddelbart...

Tror du det er selve adressen ?id=1&val=1&from=USD&to=EUR der er problemet.
Avatar billede jakobdo Ekspert
26. august 2008 - 19:04 #6
Ikke nødvendigvis.
Har du noget doc på yahoo tingen ?
Avatar billede jakobdo Ekspert
26. august 2008 - 19:05 #7
Og hvad er det du slår op ?
Kurser ?
Eller er det aktie kurser ?
Avatar billede alexanderss Nybegynder
26. august 2008 - 19:13 #8
Hej!
Nej ikke andet end det jeg kan se ud fra koden.
Det er valutakurser jeg henter.
Avatar billede jakobdo Ekspert
26. august 2008 - 19:13 #9
Hvilken kurs er PHP ?
Avatar billede alexanderss Nybegynder
26. august 2008 - 19:25 #10
1 USD = 46.15 PHP
Avatar billede jakobdo Ekspert
26. august 2008 - 19:52 #11
Jeg tror ikke jeg fik svar på: 26/08-2008 18:40:14 ?
Avatar billede alexanderss Nybegynder
26. august 2008 - 20:48 #12
Ov sorry!
Linje 28:                     $data .= @fgets($fp, 128);
Linje 41 og 42:
$x = get_conversion($_GET['from'],$_GET['to']);
    $vaerdi = $x * $_GET['val'];

Linje 47:
mysql_query("UPDATE valutaliste SET vaerdi = '$vaerdi' WHERE id = '$_GET[id]'") or die(mysql_error());
Avatar billede jakobdo Ekspert
26. august 2008 - 20:53 #13
Det virker meget underligt, for den siger from, to undefined index.
from og to burde jo komme fra: $_GET
Måske det er fordi det ikke er GET.

Hvordan kalder du det fra din cronjob ?
Avatar billede alexanderss Nybegynder
26. august 2008 - 21:01 #14
/usr/bin/wget http://www.**.dk/convert.php?id=1&val=1&from=USD&to=EUR

er kommandoen, som jeg bruger i Plesk
Avatar billede jakobdo Ekspert
26. august 2008 - 21:08 #15
Kommer fejlen hver gang ?
Og hvad hvis du kalder den direkte:

/usr/bin/php -q /sti/til/filen/convert.php?id=1&val=1&from=USD&to=EUR
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