/ Forside / Teknologi / Udvikling / PHP / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
PHP
#NavnPoint
rfh 3959
natmaden 3372
poul_from 3310
funbreak 2700
stone47 2230
Jin2k 1960
Angband 1743
Bjerner 1249
refi 1185
10  Interkril.. 1146
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

Kristian Thy uttered:
[snip]

BTW, jeg har fra starten gået ud fra at det en *nix-server. Ret mig hvis
jeg tager fejl ;)

\\kristian
--
http://lpf.ai.mit.edu/Patents/knuth-to-pto.txt

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



Søg
Reklame
Statistik
Spørgsmål : 177552
Tips : 31968
Nyheder : 719565
Indlæg : 6408849
Brugere : 218887

Månedens bedste
Årets bedste
Sidste års bedste