Avatar billede straszek Praktikant
01. oktober 2004 - 09:17 Der er 22 kommentarer og
1 løsning

køre mysql/php script som cronjob

Jeg vil gerne køre nedenstående som et cronjob, men jeg ved ikke helt hvordan jeg skal gøre det. Det nemmeste var at lave det som et phpscript og så bruge wget, men i såfald skal scriptet ligge bag ved et .htacces beskyttet dir, og det går ikke med wget. Er det andre forslag/løsninger hører jeg gerne om dem.

scriptet som skal køres:
mysql_connect("localhost", "xxx", "xxx");       
mysql_select_db("xxx");
$res = mysql_query("SELECT * FROM send_mail WHERE done = '0'");
while($row = mysql_fetch_array($res)) {
  mail($row['til'],$row['subjekt'],$row['body'],$row['fra']);
  mysql_query("UDPATE mail SET done = 1 WHERE id = " . $row['id']);
}
Avatar billede skau Nybegynder
01. oktober 2004 - 09:33 #1
Den her har jeg lige prøvet på min redhat

jeg har ikke installeret noget specielt - og en find / -name php har afsløret at jeg har sådan en i /usr/bin

Jeg lavede et script (enkel echo og noget plus noget andet) og afviklede det således:

/usr/bin/php <scriptnavn>

Det virkede fint - så jeg foreslår du laver dit script og så indsætter kaldet i din crontab:
* * * * /usr/bin/php <scriptnavn> > /dev/null 2&>1
Avatar billede skau Nybegynder
01. oktober 2004 - 09:34 #2
Hvor * selvfølgelig angiver hvornår du vil have scriptet kørt ;o)
Avatar billede straszek Praktikant
01. oktober 2004 - 09:46 #3
Når jeg køre nedenstående script fra www.xxx.dk/sendmails.php så virker det efter hensigten

men køre jeg det fra /etc/php sendmails.php får jeg denne fejl:

X-Powered-By: PHP/4.0.6
Content-type: text/html

<br>
<b>Fatal error</b>:  Call to undefined function:  mysql_connect() in <b>test.php</b> on line <b>2</b><br>


Scriptet:

<?
$conn = mysql_connect("localhost", "xxx", "xxx");
mysql_select_db("xxx");

$res = mysql_query("SELECT * FROM send_mail WHERE done = '0'");
while($row = mysql_fetch_array($res)) {
  mail($row['til'],$row['subject'],$row['body'],$row['fra']);
  mysql_query("UDPATE send_mail SET done = 1 WHERE id = " . $row['id']);
}
?>
Avatar billede erikjacobsen Ekspert
01. oktober 2004 - 10:30 #4
Du har sikkert 2 forskellige PHP-udgaver, den ene uden mysql.
4.0.6 er også rimeligt gammel, du bør opgradere.
Avatar billede skau Nybegynder
01. oktober 2004 - 10:33 #5
Det er nok som Erik Jacobsen skriver - den phpversion du har kaldt er uden mysql understøttelse (så er de kald du normalt kan gøre fra php mod sql ikke registreret)
Avatar billede straszek Praktikant
01. oktober 2004 - 10:34 #6
jeg bruger PHP Version 4.3.4
Avatar billede straszek Praktikant
01. oktober 2004 - 10:37 #7
Og lave jeg en phpinfo får jeg bl.a. dette:

MYSQL_MODULE_TYPE  builtin
Avatar billede straszek Praktikant
01. oktober 2004 - 10:42 #8
Hvor er det en anden php der bruges til cronjobs, end til www? - og hvad kna jeg gøre for at få det til at virke?
Avatar billede straszek Praktikant
01. oktober 2004 - 10:46 #9
Kan jeg "tvinge" cron til at bruge den korrekte php?
Avatar billede erikjacobsen Ekspert
01. oktober 2004 - 10:48 #10
Din 4.3.4 er sikkert et modul i din Apache server, og din 4.0.6 er din eksekverbare.
Prøv og se om du har andre "php"-ere på systemet.
Avatar billede straszek Praktikant
01. oktober 2004 - 10:50 #11
det er jeg ikke helt klar over hvordan jeg gøre, men en whereis php giver følgende:
/usr/bin/php /usr/lib/php /usr/include/php
Avatar billede skau Nybegynder
01. oktober 2004 - 10:52 #12
find / -name php
Avatar billede straszek Praktikant
01. oktober 2004 - 10:54 #13
Det giver:
/usr/bin/php
/usr/include/php
/usr/lib/apache/php
/usr/lib/apache/php-4.3.4/php
/usr/lib/php
Avatar billede skau Nybegynder
01. oktober 2004 - 10:55 #14
hvad gir en
/usr/lib/apache/php -v
Avatar billede straszek Praktikant
01. oktober 2004 - 10:56 #15
det giver:
bash: /usr/lib/apache/php: is a directory
Avatar billede skau Nybegynder
01. oktober 2004 - 10:59 #16
Så mener jeg at du skal opgradere den executable php du har i /usr/bin - og den skal understøtte mysql
Avatar billede skau Nybegynder
01. oktober 2004 - 11:00 #17
Hvad gir
/usr/lib/apache/php-4.3.4/php -v
Avatar billede straszek Praktikant
01. oktober 2004 - 11:04 #18
bash: /usr/lib/apache/php-4.3.4/php: is a directory
Avatar billede skau Nybegynder
01. oktober 2004 - 11:21 #19
Ja så vil jeg mene at du skal installere en nyere php med support for mysql
Avatar billede straszek Praktikant
01. oktober 2004 - 11:23 #20
Ok det har jeg ikke nerve til at går i gang med. Det er en server der er i "arbejde" med 18 sites på, så "nede tid" er ikke så fedt.

JEg finder på noget med wget
Avatar billede skau Nybegynder
01. oktober 2004 - 11:36 #21
med --http-user og http-password kan du jo godt bruge wget mod noget der er protected af .htaccess
Avatar billede straszek Praktikant
01. oktober 2004 - 11:59 #22
Vil du give et eksemple på hvordan det vil se ud i praksis?
Avatar billede skau Nybegynder
01. oktober 2004 - 12:32 #23
En hurtig test siger mig at det her bør virke

wget --http-user=lars --http-passwd=skau http://localhost/secretplace
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
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

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