/ 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
Omdirigering af output fra echo..?
Fra : Per Riber


Dato : 09-10-05 16:32

Hej,

Jeg bestyrer et PHP-script, som kaldes fra en cron-server
med jævne mellemrum. Det ser nogenlunde sådan ud:


<?php

ignore_user_abort(true);
require("/customers/..../readmail.php");

?>

Scriptet readmail.php echo'er en del interessant output, som
i dag returneres til cron-serveren. Jeg ville gerne opnå, at
alt output skrives til en lokal fil i stedet, og det skal
helst gøres uden at foretage ændringer i readmail.php, som
er en del af et produkt, jeg har installeret på mit
webhotel.

Findes der en kommando i PHP, som omdirigerer alt
efterfølgende output til en fil, noget i stil med "echo
tekst >> log.txt" i DOS..?

mvh Per

 
 
Kim Schulz (09-10-2005)
Kommentar
Fra : Kim Schulz


Dato : 09-10-05 16:35

On Sun, 09 Oct 2005 17:31:32 +0200
Per Riber <none@nospam.invalid> wrote:

> Hej,
>
> Jeg bestyrer et PHP-script, som kaldes fra en cron-server
> med jævne mellemrum. Det ser nogenlunde sådan ud:
>
>
> <?php
>
> ignore_user_abort(true);
> require("/customers/..../readmail.php");
>
> ?>
>
> Scriptet readmail.php echo'er en del interessant output, som
> i dag returneres til cron-serveren. Jeg ville gerne opnå, at
> alt output skrives til en lokal fil i stedet, og det skal
> helst gøres uden at foretage ændringer i readmail.php, som
> er en del af et produkt, jeg har installeret på mit
> webhotel.
>
> Findes der en kommando i PHP, som omdirigerer alt
> efterfølgende output til en fil, noget i stil med "echo
> tekst >> log.txt" i DOS..?

kan du ikke bare gøre det i cron da?

Per Riber (09-10-2005)
Kommentar
Fra : Per Riber


Dato : 09-10-05 16:55

Sun, 9 Oct 2005 17:35:21 +0200 skrev Kim Schulz
<kim@schulz.dk>:

>On Sun, 09 Oct 2005 17:31:32 +0200
>Per Riber <none@nospam.invalid> wrote:

>> Findes der en kommando i PHP, som omdirigerer alt
>> efterfølgende output til en fil, noget i stil med "echo
>> tekst >> log.txt" i DOS..?
>
>kan du ikke bare gøre det i cron da?

Det kan jeg desværre ikke, da jeg ikke har adgang til cron
hos min udbyder. Scriptet startes via et http-kald, som jeg
har defineret hos http://cronjob.de.

mvh Per

Kim Schulz (09-10-2005)
Kommentar
Fra : Kim Schulz


Dato : 09-10-05 17:02

On Sun, 09 Oct 2005 17:54:30 +0200
Per Riber <none@nospam.invalid> wrote:

> Sun, 9 Oct 2005 17:35:21 +0200 skrev Kim Schulz
> <kim@schulz.dk>:
>
> >On Sun, 09 Oct 2005 17:31:32 +0200
> >Per Riber <none@nospam.invalid> wrote:
>
> >> Findes der en kommando i PHP, som omdirigerer alt
> >> efterfølgende output til en fil, noget i stil med "echo
> >> tekst >> log.txt" i DOS..?
> >
> >kan du ikke bare gøre det i cron da?
>
> Det kan jeg desværre ikke, da jeg ikke har adgang til cron
> hos min udbyder. Scriptet startes via et http-kald, som jeg
> har defineret hos http://cronjob.de.

men hvis du ikke kan ændre php og du ikke kan ændre cron, hvad er det
så lige du vil?

normalt kan du i cron sige
1 * * * * wget http://link-til-din-side.dk/foo.php -O -
>>din-logfil.log


Per Riber (09-10-2005)
Kommentar
Fra : Per Riber


Dato : 09-10-05 18:30

Sun, 9 Oct 2005 18:01:44 +0200 skrev Kim Schulz
<kim@schulz.dk>:

>men hvis du ikke kan ændre php og du ikke kan ændre cron, hvad er det
>så lige du vil?

Jeg kan (og vil skam meget gerne) ændre i scriptet, som jeg
citerede i mit første indlæg:

<?php
ignore_user_abort(true);
require("/customers/..../readmail.php");
?>

Jeg vil derimod nødigt (aht. senere opgraderinger af
produktet) ændre i scriptet readmail.php, som bliver kaldt
og som er det, der indeholder echo-instruktionerne.

Og desværre har jeg ikke selv adgang til cron.

mvh Per

Kim Schulz (09-10-2005)
Kommentar
Fra : Kim Schulz


Dato : 09-10-05 18:46

On Sun, 09 Oct 2005 19:30:25 +0200
Per Riber <none@nospam.invalid> wrote:

> Sun, 9 Oct 2005 18:01:44 +0200 skrev Kim Schulz
> <kim@schulz.dk>:
>
> >men hvis du ikke kan ændre php og du ikke kan ændre cron, hvad er det
> >så lige du vil?
>
> Jeg kan (og vil skam meget gerne) ændre i scriptet, som jeg
> citerede i mit første indlæg:
>
> <?php
> ignore_user_abort(true);
> require("/customers/..../readmail.php");
> ?>
>
> Jeg vil derimod nødigt (aht. senere opgraderinger af
> produktet) ændre i scriptet readmail.php, som bliver kaldt
> og som er det, der indeholder echo-instruktionerne.
>
> Og desværre har jeg ikke selv adgang til cron.

<?php
ignore_user_abort(true);
ob_start();
require("/customers/..../readmail.php");
$output = ob_get_flush();
?>

skriv $output til en fil. som du nu normalt ville gøre det i php.
$output er en "streng" som indeholder alt det der normalt ville blive
skrevet ud til browseren/konsollen/whatever

Per Riber (09-10-2005)
Kommentar
Fra : Per Riber


Dato : 09-10-05 21:33

Sun, 9 Oct 2005 19:45:39 +0200 skrev Kim Schulz
<kim@schulz.dk>:

>> Jeg kan (og vil skam meget gerne) ændre i scriptet, som jeg
>> citerede i mit første indlæg:
>>
>> <?php
>> ignore_user_abort(true);
>> require("/customers/..../readmail.php");
>> ?>

Endnu et problem.

Readmail.php er ikke beregnet til at blive kaldt som en
subrutine, så den afslutter desværre med exit i stedet for
return.

Findes der en metode til at få kontrollen tilbage, hvilket
jeg ikke gør med min nuværende require..?

Eller SKAL jeg i gang med at modificere readmail.php..?

mvh Per

jamen (09-10-2005)
Kommentar
Fra : jamen


Dato : 09-10-05 18:50

Per Riber wrote:
> <?php
>
> ignore_user_abort(true);
> require("/customers/..../readmail.php");
>
> ?>
>
> Scriptet readmail.php echo'er en del interessant output, som
> i dag returneres til cron-serveren. Jeg ville gerne opnå, at
> alt output skrives til en lokal fil i stedet, og det skal
> helst gøres uden at foretage ændringer i readmail.php, som
> er en del af et produkt, jeg har installeret på mit
> webhotel.

ob_start();

ignore_user_abort(true);
require("/customers/..../readmail.php");

$output = ob_get_clean();


// skriv $output til en fil

Per Riber (09-10-2005)
Kommentar
Fra : Per Riber


Dato : 09-10-05 19:11

Sun, 09 Oct 2005 19:50:25 +0200 skrev jamen <jamen@invalid>:

>ob_start();
>
>ignore_user_abort(true);
>require("/customers/..../readmail.php");
>
>$output = ob_get_clean();
>
>
>// skriv $output til en fil

Super..! 1000 tak for hjælpen både til dig og til Kim..

mvh Per

Frederik Sunne (10-10-2005)
Kommentar
Fra : Frederik Sunne


Dato : 10-10-05 22:24


>> Scriptet readmail.php echo'er en del interessant output, som
>> i dag returneres til cron-serveren. Jeg ville gerne opnå, at
>> alt output skrives til en lokal fil i stedet, og det skal
>> helst gøres uden at foretage ændringer i readmail.php, som
>> er en del af et produkt, jeg har installeret på mit
>> webhotel.

Er det ikke bare at bruge file() ?
Stien er så bare bare en URL i stedet for en lokal fil...?

Mvh,

Frederik

Kim Schulz (09-10-2005)
Kommentar
Fra : Kim Schulz


Dato : 09-10-05 21:56

On Sun, 09 Oct 2005 22:32:43 +0200
Per Riber <none@nospam.invalid> wrote:

> Sun, 9 Oct 2005 19:45:39 +0200 skrev Kim Schulz
> <kim@schulz.dk>:
>
> >> Jeg kan (og vil skam meget gerne) ændre i scriptet, som jeg
> >> citerede i mit første indlæg:
> >>
> >> <?php
> >> ignore_user_abort(true);
> >> require("/customers/..../readmail.php");
> >> ?>
>
> Endnu et problem.
>
> Readmail.php er ikke beregnet til at blive kaldt som en
> subrutine, så den afslutter desværre med exit i stedet for
> return.
>
> Findes der en metode til at få kontrollen tilbage, hvilket
> jeg ikke gør med min nuværende require..?
>
> Eller SKAL jeg i gang med at modificere readmail.php..?

hvis du har mulighed for at udføre eksterne scripts med fopen så kunne
du gøre det
$fh=fopen("http://www.dinserver.dk/readmail.php","r");
....
når readmail så exiter så betyder det ikke noget for dit script da det
ikke bliver påvirket af udførslen.
output som du vil have skrevet til filen kan du så læse fra $fh som man
normalt ville gøre det med et filehandle.

Per Riber (09-10-2005)
Kommentar
Fra : Per Riber


Dato : 09-10-05 22:36

Sun, 9 Oct 2005 22:56:03 +0200 skrev Kim Schulz
<kim@schulz.dk>:

>hvis du har mulighed for at udføre eksterne scripts med fopen så kunne
>du gøre det
>$fh=fopen("http://www.dinserver.dk/readmail.php","r");

Det kan jeg desværre ikke. Variablen allow_url_fopen er off
på mit webhotel.

Jeg må vist bide i det sure æble og modificere readmail.php.

Mange tak for hjælpen alligevel. Jeg er blevet en del
klogere på PHP i dag

mvh Per

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

Månedens bedste
Årets bedste
Sidste års bedste