php und mysql in einer shell und als cron

G

gabriel

Grünschnabel
moin,
ich stehe grad etwas auf dem schlauch. ich möchte in einer datei xy.sh anweisungen für einen mysqldump und zur ansteuerung eines php skriptes unterbringen und das dann als cron alle 30 min laufen lassen.
ich leite das skript mit

#!/bin/bash
mysqlimport ...

ein, was auch für mysql bestens geht. jedoch bekomme ich es nicht dazu, das auch php ausgeführt wird (wenn ich das skript manuell starte geht alles bestens). nach dem mysqlimport soll es das skript convert.php ausführen, was ich so einleite:

/usr/bin/php /opt/xy/convert.php

auch die alternative mit #! scheint nicht zu gehen.
kann mir jemand sagen, was ich falsch mache?

danke im voraus
 
eigentlich sollte so alles laufen - gibt's denn auch eine Fehlermeldung?

Klingen tut's nach einem Problem im Environment...
 
nein leider nicht. es wird weder ein fehler, noch ein erfolg angezeigt. was mir aber insgesamt noch nicht ganz klar ist, es scheint ja eine differenz zu geben, zu der ausgabe, wenn man manuell in der shell einen befehl ausführt und zwischen dem, was ein cronjob macht. gibts da irgendwelche regeln und spezifikationen. ich find da eher wenig zu.
 
Der Hauptunterschied ist eben das Environment - lass Dir von cron mal die Ausgabe von set / env in eine Datei ausgeben und vergleiche das mal mit der Ausgabe an der Login-Shell.

Evtl. liegt's auch nur am ausführenden Verzeichnis - bei cron sollte man ded. immer mit kompletten Pfaden arbeiten, cd konsequent durchziehen, ...

Und eben auch ein paar Debug-Marker und Ausgaben setzen.

Wenn möglich, poste doch mal das komplette Shell-Script und relevante Teile aus dem php-Code - Fallstricke erkennt man dann meist recht schnell...
 
Hallo,

ich weiß nicht ob es etwas damit zu tun hat,
aber ich rufe in einem Shell-Skript eine PHP-Datei wie folgt auf:
php -f /pfad/zur/datei.php

Das läuft auch als cronjob.
 
die cronausgabe werd ich mal testen

die sh datei:

Code:
#!/bin/bash

mysqlimport --user=meinuser --password=meinpass --delete --default-character-set=latin1 --fields-terminated-by=';' --fields-enclosed-by='"' --fields-escaped-by='\' --lines-terminated-by='\n' --ignore-lines=1 meinedb meinecsv.csv;

/usr/bin/php /opt/xy/convert.php

der phpcode zu convert.php:
Code:
<?
require_once("/opt/xy/include/config.inc.php");

$select1 = "select auftragid, statusdatum, statustexteid, partnerid, internstatus, text, quittungsgeber from DFUESTATUS";
$sql1 = mysql_query($select1);

while ($row1 = mysql_fetch_object ($sql1))
{
$jahr = substr($row1->statusdatum,6,4);
$bindestr = "-";
$monat = substr($row1->statusdatum,3,2);
$tag = substr($row1->statusdatum,0,2);
$datum = "$jahr$bindestr$monat$bindestr$tag";

$stunde = substr($row1->statusdatum,10,3);
$minute = substr($row1->statusdatum,14,3);
$doppelp = ":";
$zeit = "$stunde$doppelp$minute";

$gesamt = "$datum $zeit";

$abfrage = "insert into DFUESTATUSNEU (auftragid,statusdatum, statustexteid, partnerid, internstatus, text, quittungsgeber) values ('$row1->auftragid','$gesamt','$row1->statustexteid', '$row1->partnerid', '$row1->internstatus', '$row1->text', '$row1->quittungsgeber')";
$ergebnis = mysql_query($abfrage);
}
?>

@death:
das ist auch eine gute idee..werd ich mal testen
 
wo liegt denn die meinecsv.csv?

Bist Du Dir sicher, daß der Import sauber durchläuft?
 
die liegt auch in einem verzeichnis (sorry hatte pfad beim posting gelöscht) import funktioniert 100% damit. habe ich an den gestiegenen datensätzen gesehen in der tabelle.
.
.
.
EDIT (autom. Beitragszusammenführung) :
.

was ich nicht verstehe ist, das ich genau das gleiche problem auch bekomme, wenn ich ein mysql statement versuche über einen cron aus der datei ausführen zu lassen. mysqldump funktioniert aber mysql nicht...bei manuellem shellaufruf gehts aber wieder.

mysql -umeinuser -pmeinpass --database=meinedb --execute="delete from meinetabelle";
 
Zuletzt bearbeitet:
Hallo gabriel,

wo liegt denn dein mysql: /usr/bin oder /opt/lampp/bin ?
Versuche es mal mit den vollen Pfaden.
Gruss zst
 

Ähnliche Themen

Jaunty + Zend + Gdata + xampp

Zurück
Oben