|
| At simulere cron-job? Fra : Jonas Delfs |
Dato : 02-06-04 22:57 |
|
Hej -
Jeg kunne godt bruge et par kreative forslag til hvordan jeg løser et
lettere interessant problem.. :)
Hvordan får jeg ekserkveret et script pr. bruger-forespørgsel, uden at
brugeren skal vente på udførslen?
Og gerne uden at det bliver alt for dirty..
Når en bruger går ind på en side, skal udførslen af et andet, uafhængigt
script altså sættes i gang - hvordan det?
--
Mvh. Jonas Delfs, http://delfs.dk
| |
Kristian Thy (02-06-2004)
| Kommentar Fra : Kristian Thy |
Dato : 02-06-04 23:27 |
|
Jonas Delfs uttered:
> Hvordan får jeg ekserkveret et script pr. bruger-forespørgsel, uden at
> brugeren skal vente på udførslen?
> Og gerne uden at det bliver alt for dirty..
>
> Når en bruger går ind på en side, skal udførslen af et andet, uafhængigt
> script altså sættes i gang - hvordan det?
Har du adgang til at udføre exec() kald på serveren? Har den en
CLI-version af php installeret?
\\kristian
--
"The brain is a wonderful organ. It starts working the moment you get
up in the morning and does not stop until you get into the office."
--Robert Frost
| |
Jonas Delfs (04-06-2004)
| Kommentar Fra : Jonas Delfs |
Dato : 04-06-04 13:38 |
|
"Kristian Thy" <thy@it.edu> skrev i en meddelelse
news:2i72hrFk234hU1@uni-berlin.de...
> Jonas Delfs uttered:
> > Hvordan får jeg ekserkveret et script pr. bruger-forespørgsel, uden at
> > brugeren skal vente på udførslen?
> > Og gerne uden at det bliver alt for dirty..
> >
> > Når en bruger går ind på en side, skal udførslen af et andet, uafhængigt
> > script altså sættes i gang - hvordan det?
>
> Har du adgang til at udføre exec() kald på serveren?
Det tror jeg umiddelbart, ja...
> Har den en
> CLI-version af php installeret?
Det er jeg ikke klar over - hvordan finder jeg ud af det?
--
Mvh. Jonas Delfs, http://delfs.dk
| |
Andreas Frøsting (04-06-2004)
| Kommentar Fra : Andreas Frøsting |
Dato : 04-06-04 13:49 |
|
Hejsa,
>> Har den en
>> CLI-version af php installeret?
>
>Det er jeg ikke klar over - hvordan finder jeg ud af det?
Hvis det er på delfs.dk, så har du
--
Andreas Frøsting
http://phpwizard.dk
| |
Kristian Thy (04-06-2004)
| Kommentar Fra : Kristian Thy |
Dato : 04-06-04 22:41 |
|
Jonas Delfs uttered:
>>> Når en bruger går ind på en side, skal udførslen af et andet, uafhængigt
>>> script altså sættes i gang - hvordan det?
>>
>> Har du adgang til at udføre exec() kald på serveren?
>
> Det tror jeg umiddelbart, ja...
Prøv at lave flg. lille php-fil og se outputtet i en browser:
<?php passthru( "which php" ); ?>
Det skulle give dig stien til CLI-PHP på serveren. Den skal du bruge
herunder.
Lav en fil ved navn cli.php. Den skal indeholde flg.:
#!/sti/til/php
<?php
mail( "dig@ditdomæne.invalid", "Eureka", "Mail fra cli.php!" );
?>
Gør den eksekverbar - ``chmod +x cli.php''
Lav en ny fil ved navn exec.php. Det er den du skal åbne i browseren,
som skal eksekvere det andet script.
<?php
exec('bash -c "exec nohup setsid cli.php > /dev/null 2>&1 &"');
?>
Hvis du går ind på exec.php med din browser og modtager en mail fra
cli.php, så virker det :)
\\kristian
--
"The brain is a wonderful organ. It starts working the moment you get
up in the morning and does not stop until you get into the office."
--Robert Frost
| |
Jonas Delfs (09-06-2004)
| Kommentar Fra : Jonas Delfs |
Dato : 09-06-04 14:41 |
|
"Kristian Thy" <thy@it.edu> skrev i en meddelelse
news:2ic8ipFkk1niU1@uni-berlin.de...
> Jonas Delfs uttered:
> >>> Når en bruger går ind på en side, skal udførslen af et andet,
uafhængigt
> >>> script altså sættes i gang - hvordan det?
> >>
> >> Har du adgang til at udføre exec() kald på serveren?
> >
> > Det tror jeg umiddelbart, ja...
> [snip beskrivelse]
Det virker ikke rigtigt... hvis jeg kalder cli.php direkte, modtager jeg
kort efter en mail - men et kald til exec.php giver ingen mail i
mailboxen...
Jeg får ingen fejl, men cli.php synes ikke at blive ekserkveret ved et kald
til exec.php
Nogen idéer?
--
Mvh. Jonas Delfs, http://delfs.dk
| |
Kristian Thy (09-06-2004)
| Kommentar Fra : Kristian Thy |
Dato : 09-06-04 16:07 |
|
Jonas Delfs uttered:
> Det virker ikke rigtigt... hvis jeg kalder cli.php direkte, modtager jeg
> kort efter en mail - men et kald til exec.php giver ingen mail i
> mailboxen...
Når du skriver "kalder cli.php direkte", hvad mener du så? Har du åbnet
den i et browservindue, eller kørt den fra en kommandolinie på serveren
(fx ved at ssh'e ind til den)?
> Jeg får ingen fejl, men cli.php synes ikke at blive ekserkveret ved et kald
> til exec.php
>
> Nogen idéer?
Inkompetence fra min side kan ikke udelukkes - jeg har ikke testet det
jeg skrev til dig ;)
Prøv at poste teksten fra begge filer i sin fulde længde.
\\kristian
--
http://lpf.ai.mit.edu/Patents/knuth-to-pto.txt
| |
Kristian Thy (09-06-2004)
| Kommentar Fra : Kristian Thy |
Dato : 09-06-04 16:08 |
| | |
Jonas Delfs (09-06-2004)
| Kommentar Fra : Jonas Delfs |
Dato : 09-06-04 16:40 |
|
"Kristian Thy" <thy@it.edu> skrev i en meddelelse
news:2ionfcFp2bs1U2@uni-berlin.de...
> Kristian Thy uttered:
> [snip]
>
> BTW, jeg har fra starten gået ud fra at det en *nix-server. Ret mig hvis
> jeg tager fejl ;)
Serveren kører FreeBSD.
cli.php
-------------------
#!/usr/local/bin/php
<?php
mail("min@mail.dk", "Eureka", "Mail fra cli.php!" );
?>
exec.php
-------------------
<?php
exec('bash -c "exec nohup setsid cli.php > /dev/null 2>&1 &"');
?>
--
Mvh. Jonas Delfs, http://delfs.dk
| |
Kristian Thy (09-06-2004)
| Kommentar Fra : Kristian Thy |
Dato : 09-06-04 16:45 |
|
Jonas Delfs uttered:
> Serveren kører FreeBSD.
Ah...så kan det være at problemet er at den ikke har bash. Prøv at ændre
> exec('bash -c "exec nohup setsid cli.php > /dev/null 2>&1 &"');
Til
exec('sh -c "exec nohup setsid cli.php > /dev/null 2>&1 &"');
Hvis det heller ikke virker, så prøv med bare
exec('./cli.php');
(Alt det der 'exec nohup'-besværgelse er sådan set bare for at få
cli.php til at køre i baggrunden så den kaldende php-fil ikke hænger.)
Hvis det heller ikke virker, så må problemet være at exec er slået fra
på en eller anden måde i php.ini. Der kan jeg så ikke lige være
behjælpelig...
\\kristian
--
http://lpf.ai.mit.edu/Patents/knuth-to-pto.txt
| |
Per Fahrenolz Smith (09-06-2004)
| Kommentar Fra : Per Fahrenolz Smith |
Dato : 09-06-04 22:03 |
|
Ja, undskyld at jeg lige bryder ind, men er det ikke fordi at
"> /dev/null" sender et evt. output ud "i den blå luft"? eller er det
bare mig der har et eller andet baglæns?
Det er kun et gæt fra min side...
mvh
Per Smith
>
>>exec('bash -c "exec nohup setsid cli.php > /dev/null 2>&1 &"');
>
| |
Kristian Thy (09-06-2004)
| Kommentar Fra : Kristian Thy |
Dato : 09-06-04 22:44 |
|
Per Fahrenolz Smith uttered:
> Ja, undskyld at jeg lige bryder ind, men er det ikke fordi at
> "> /dev/null" sender et evt. output ud "i den blå luft"? eller er det
> bare mig der har et eller andet baglæns?
Det den sender ud i den blå luft er outputtet fra php-filen til stdout.
At sende en mail sker ikke over stdout (eller stderr som også bliver
sendt i bitspanden), så det er ikke noget problem.
> Det er kun et gæt fra min side...
Du skal være velkommen :)
\\kristian
--
http://lpf.ai.mit.edu/Patents/knuth-to-pto.txt
| |
Jonas Delfs (10-06-2004)
| Kommentar Fra : Jonas Delfs |
Dato : 10-06-04 00:06 |
|
"Kristian Thy" <thy@it.edu> skrev i en meddelelse
news:2iopkaFp2bs1U3@uni-berlin.de...
> Jonas Delfs uttered:
> exec('sh -c "exec nohup setsid cli.php > /dev/null 2>&1 &"');
Virker heller ikke...
> Hvis det heller ikke virker, så prøv med bare
> exec('./cli.php');
Virker fint...
Det er mig lidt mystisk... jeg må indrømme at jeg ikke er verdensmester i
disse kommandoer, så jeg håber ikke du er stået af:)
--
Mvh. Jonas Delfs, http://delfs.dk
| |
Kristian Thy (10-06-2004)
| Kommentar Fra : Kristian Thy |
Dato : 10-06-04 07:06 |
|
Jonas Delfs uttered:
>> Jonas Delfs uttered:
>> exec('sh -c "exec nohup setsid cli.php > /dev/null 2>&1 &"');
>
> Virker heller ikke...
>
>> Hvis det heller ikke virker, så prøv med bare
>> exec('./cli.php');
>
> Virker fint...
Okay, så er det fordi din server kører en anden shell end jeg er vant
til. Den der virker kan du godt bruge (med lidt modifikationer), men den
får scriptet der kalder den til at hænge til cli.php er udført. Så kan
du jo vurdere om det bliver et problem.
> Det er mig lidt mystisk... jeg må indrømme at jeg ikke er verdensmester i
> disse kommandoer, så jeg håber ikke du er stået af:)
Mester er jeg heller ikke, men jeg prøver lige at finde ud af en mere
tilfredsstillende løsning når jeg har overstået min Database-eksamen i
eftermiddag :)
\\kristian
--
http://lpf.ai.mit.edu/Patents/knuth-to-pto.txt
| |
Jonas Delfs (10-06-2004)
| Kommentar Fra : Jonas Delfs |
Dato : 10-06-04 11:51 |
|
"Kristian Thy" <thy@it.edu> skrev i en meddelelse
news:2iqc31Fpssk5U2@uni-berlin.de...
> Jonas Delfs uttered:
> >> Jonas Delfs uttered:
> >> exec('sh -c "exec nohup setsid cli.php > /dev/null 2>&1 &"');
> >
> > Virker heller ikke...
> >
> >> Hvis det heller ikke virker, så prøv med bare
> >> exec('./cli.php');
> >
> > Virker fint...
>
> Okay, så er det fordi din server kører en anden shell end jeg er vant
> til. Den der virker kan du godt bruge (med lidt modifikationer), men den
> får scriptet der kalder den til at hænge til cli.php er udført. Så kan
> du jo vurdere om det bliver et problem.
Hvis ikke det ville være et problem kunne jeg jo bare include() da "cli.php"
jo ikke giver noget output... men da "cli.php" både skal snakke med en
imap-server og evt. noget database-værk er det helt sikkert nødvendigt.
> > Det er mig lidt mystisk... jeg må indrømme at jeg ikke er verdensmester
i
> > disse kommandoer, så jeg håber ikke du er stået af:)
>
> Mester er jeg heller ikke, men jeg prøver lige at finde ud af en mere
> tilfredsstillende løsning når jeg har overstået min Database-eksamen i
> eftermiddag :)
Det lyder godt!:)
--
Mvh. Jonas Delfs, http://delfs.dk
| |
Kristian Thy (11-06-2004)
| Kommentar Fra : Kristian Thy |
Dato : 11-06-04 18:50 |
|
Jonas Delfs uttered:
>> Mester er jeg heller ikke, men jeg prøver lige at finde ud af en mere
>> tilfredsstillende løsning når jeg har overstået min Database-eksamen i
>> eftermiddag :)
>
> Det lyder godt!:)
Det kom lige til at tage lidt længere end ventet... ;)
Kan du på en eller anden måde finde ud af hvilken shell (sh, zsh, ksh
etc.) din server kører? Evt. ved at sende en mail til sysadm.
\\kristian
--
http://lpf.ai.mit.edu/Patents/knuth-to-pto.txt
| |
Jonas Delfs (12-06-2004)
| Kommentar Fra : Jonas Delfs |
Dato : 12-06-04 15:01 |
|
"Kristian Thy" <thy@it.edu> skrev i en meddelelse
news:2iu9luFrgjabU1@uni-berlin.de...
> Jonas Delfs uttered:
> >> Mester er jeg heller ikke, men jeg prøver lige at finde ud af en mere
> >> tilfredsstillende løsning når jeg har overstået min Database-eksamen i
> >> eftermiddag :)
> >
> > Det lyder godt!:)
>
> Det kom lige til at tage lidt længere end ventet... ;)
>
> Kan du på en eller anden måde finde ud af hvilken shell (sh, zsh, ksh
> etc.) din server kører? Evt. ved at sende en mail til sysadm.
Min phpinfo siger /usb/local/bin/bash... ?
Har dog sendt en mail til sysadm for bekræftigelse.
--
Mvh. Jonas Delfs, http://delfs.dk
| |
Jonas Delfs (13-06-2004)
| Kommentar Fra : Jonas Delfs |
Dato : 13-06-04 18:30 |
|
"Jonas Delfs" <jonas@NOSPAMdelfs.dk> skrev i en meddelelse
news:40cb0cab$0$3050$14726298@news.sunsite.dk...
> "Kristian Thy" <thy@it.edu> skrev i en meddelelse
> news:2iu9luFrgjabU1@uni-berlin.de...
> > Jonas Delfs uttered:
> > >> Mester er jeg heller ikke, men jeg prøver lige at finde ud af en mere
> > >> tilfredsstillende løsning når jeg har overstået min Database-eksamen
i
> > >> eftermiddag :)
> > >
> > > Det lyder godt!:)
> >
> > Det kom lige til at tage lidt længere end ventet... ;)
> >
> > Kan du på en eller anden måde finde ud af hvilken shell (sh, zsh, ksh
> > etc.) din server kører? Evt. ved at sende en mail til sysadm.
>
> Min phpinfo siger /usb/local/bin/bash... ?
> Har dog sendt en mail til sysadm for bekræftigelse.
Sysadm. siger bash, sh og csh.
Any clues?
--
Mvh. Jonas Delfs, http://delfs.dk
| |
Kristian Thy (13-06-2004)
| Kommentar Fra : Kristian Thy |
Dato : 13-06-04 23:15 |
|
Jonas Delfs uttered:
> Sysadm. siger bash, sh og csh.
Så fatter jeg ikke at
exec('bash -c "exec nohup setsid cli.php > /dev/null 2>&1 &"');
ikke virker.
> Any clues?
Prøv med
exec('./cli.php > /dev/null 2>&1 &');
- så vil cli.php muligvis ikke blive kaldt, eller evt. kun kørt delvist,
hvis nogen klikker ``stop'' mens exec.php loader.
Læs evt. selv ``alerque.com''s indlæg på
http://dk2.php.net/manual/en/function.exec.php
HTH HAND :)
\\kristian
--
http://lpf.ai.mit.edu/Patents/knuth-to-pto.txt
| |
Jonas Delfs (14-06-2004)
| Kommentar Fra : Jonas Delfs |
Dato : 14-06-04 10:38 |
|
"Kristian Thy" <thy@it.edu> skrev i en meddelelse
news:2j4200FsgmopU1@uni-berlin.de...
> Prøv med
> exec('./cli.php > /dev/null 2>&1 &');
> - så vil cli.php muligvis ikke blive kaldt, eller evt. kun kørt delvist,
> hvis nogen klikker ``stop'' mens exec.php loader.
>
> Læs evt. selv ``alerque.com''s indlæg på
> http://dk2.php.net/manual/en/function.exec.php
Ahh - nu begynder det at ligne noget.
exec('./cli.php > /dev/null 2>&1 &'); virker umiddelbart fint, men, hvad
måske mere interessant er, også exec('nohup ./cli.php > /dev/null 2>&1 &');
Jeg har lidt svært ved at teste om nohup har nogen effekt sat ind på denne
måde, men da det i virkeligheden ikke gør så meget hvis scriptet afbrydes,
gør det mig ikke så meget...
Mange tak for hjælpen:)
--
Mvh. Jonas Delfs, http://delfs.dk
| |
|
|