Vi har behov for at se status på et php script jeg kører under dets kørsel. Til det fandt vi følgende løsning.
3 filer klarer jobbet:
index.php kører 2 iframes.
viewer.php kører i den ene iframe og læser fra filen test.txt
writer.php kører i den anden iframe og skriver sin status ned i test.txt (i dette eksempel nedskriver den $i som kører i et for loop)
index.php
<html>
<head>
<title> php problem example working</title>
</head>
<body>
index.php
<iframe src='viewer.php' width='100%' height='80%'></iframe>
<iframe src='writer.php' width='100%' height='20%'></iframe>
</body>
</html>
viewer.php
<html>
<head>
<title> php problem example working</title>
<meta http-equiv="refresh" content="0.2;url=">
</head>
<body>
viewer.php
<br />
<br />
<?php
readfile('test.txt');
?>
</body>
</html>
writer.php
<html>
<head>
<title> php problem example working</title>
</head>
<body>
writer.php
<br />
<br />
<?php
for($i=0;$i<50;$i++){
usleep(300000);
$myFile = "test.txt";
$fh = fopen($myFile, 'w') or die("can't open file");
fwrite($fh, "i = $i");
fclose($fh);
}
echo "loop done";
?>
</body>
</html>
Live demo på:
http://bergpalm.dk/workingSå langt så godt. Men vores system bruger en adgangskontrol baseret på sessions. Da dette blev inkorporeret (<?php include(protected.php) ?> i toppen af filen) begyndte viewer.php at vente på at writer.php var færdig med at eksekvere.
Jeg har lavet følgende eksempel filer.
Det er det samme system som før, men nu bruges sessions til at styre update hastigheden på viewer således at den burde stoppe med at opdatere når at writer.php var færdig.
index.php
<?php
session_start();
$_SESSION['update']=0.2;
?>
<html>
<head>
<title> php problem example failing</title>
</head>
<body>
index.php
<iframe src='viewer.php' width='100%' height='80%'></iframe>
<iframe src='writer.php' width='100%' height='20%'></iframe>
</body>
</html>
viewer.php
<?php
session_start();
$update=$_SESSION['update'];
?>
<html>
<head>
<title> php problem example failing</title>
<meta http-equiv="refresh" content="<?php echo $update; ?>;url=">
</head>
<body>
viewer.php
<br />
<br />
<?php
readfile('test.txt');
?>
</body>
</html>
writer.php
<?php session_start(); ?>
<html>
<head>
<title> php problem example failing</title>
</head>
<body>
writer.php
<br />
<br />
<?php
for($i=0;$i<50;$i++){
usleep(300000);
$myFile = "test.txt";
$fh = fopen($myFile, 'w') or die("can't open file");
fwrite($fh, "i = $i");
fclose($fh);
}
echo "loop done";
$_SESSION['update']=-1;
?>
</body>
</html>
Live demo på:
http://bergpalm.dk/failingNogen ideer til hvordan vi kan få det til at virke som planlagt?
Indlæg senest redigeret d. 07.02.2008 09:24 af Bruger #5578