[Php]Script aanroepen

Pagina: 1
Acties:

  • Spamajor
  • Registratie: Oktober 2000
  • Laatst online: 28-12-2025
Hallo allemaal,

Ik heb even een test plaatjes collectie online staan waarvoor ik een scriptje voor aan het bedenken ben. Deze pagina's worden gemaakt met een perlscript Album. Nu heb ik het zo voor elkaar gekregen dat je deze pagina's kun verversen. Dit gebeurt door het volgende php scriptje

PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
<?
if (!$HTTP_REFERER) {
    die("<B>Error:</B> Je hebt collectiegen.php direct aangeroepen of je browser heeft geen referrer op.");
}
$fp = @fopen("F:/Inetpub/Album/collectiegen.lock","r"); 
if ($fp) { 
    die("<B>Error:</B> Er draait al een instantie van Album.");
}

$lokatie = $HTTP_REFERER;
$lokatie = ereg_replace('http://www.spamajor.com/', '', $lokatie);
$lokatie = ereg_replace('http://spamajor.com:3333/', '', $lokatie); 

if(strstr($lokatie,collectie)) { 
    $bestandopen = ("f:\ & cd\ & cd inetpub & cd album & rename collectiegen.open collectiegen.lock & exit");
    system("$bestandopen");
    $test = ("f:\ & cd\ & cd inetpub & cd album & start /low rjperl album -clean -sample -theme themes/maste $lokatie & exit");
    // uitvoeren album script
    while(@passthru("$test"));
    $bestandsluit = ("f:\ & cd\ & cd inetpub & cd album & rename collectiegen.lock collectiegen.open & exit");
    system("$bestandsluit");
    // effe praten
    echo "Album has finisched updating $lokatie <br> You wil be returned to you orignal location";
}
else
{ 
    echo "<B>Error:</B> Niet vanuit de collectie aangeroepen."; 
}
?>


Dat album scriptje is erg processor intensief dus ik heb een mechanisme erin geplaats zodat ie niet wordt uitgevoerd wanneer ie die "collectiegen.lock" vindt, mijn vraag is dat of er geen mechanisme bestaat in php zodat ie weet dat dit scriptje al draait. Soms voert ie ook de laatste actie niet uit zodat die lock file blijft staan, en dus nooit meer kan opstarten voordat ik hem met de hand weer hebt hernoemd.

//ohja

http://spamajor.com:3333/collectie/ hier staat die collectie
btw voordat je dat script kan aanroepen moet je eerst ingelogd zijn :/

  • drm
  • Registratie: Februari 2001
  • Laatst online: 09-06-2025

drm

f0pc0dert

hm, je zou met een shell-opdacht ps -a kunnen controleren welke processen allemaal aanwezig zijn.

Beter nog is het perl-script, zolang het draait, een pid bestand weg laten schrijven, waarin dat script het PID zet van zichzelf. Vervolgens met een
ps -p `cat /pad/naar/het/pid/bestand`
opdracht nagaan of dat proces draait.

edit:

Overigens omit je met de -h optie de headlines van de ps output.

En nog een handigheidje om te weten, dit is natuurlijk uitgegaan van een linux/unix/bsd-achtige bak ;)

Music is the pleasure the human mind experiences from counting without being aware that it is counting
~ Gottfried Leibniz


  • Spamajor
  • Registratie: Oktober 2000
  • Laatst online: 28-12-2025
Hmm, ik heb een win32 achtige bak. Maar ik doe dus ongeveer hetzelfde als dat mechanisme
PHP:
1
2
$bestandopen = ("f:\ & cd\ & cd inetpub & cd album & rename collectiegen.open collectiegen.lock & exit"); 
system("$bestandopen");

en
PHP:
1
2
bestandsluit = ("f:\ & cd\ & cd inetpub & cd album & rename collectiegen.lock collectiegen.open & exit"); 
system("$bestandsluit");

  • PrinsEdje80
  • Registratie: Oktober 2001
  • Laatst online: 01-01 15:26

PrinsEdje80

Holographic, not grated...

Misschien dat je niet met move gaat werken, maar met delete, maw dat de lock-file verwijderd is als je de applicatie moet runnen en dat je een lock-file hebt op het moment dat het niet gerund moet worden.
En dan kijken met de file_exist oid of het bestand bestaat en een grootte heeft.

Used to be Down Under... Foto gallery


  • kvdveer
  • Registratie: November 2000
  • Laatst online: 06-11-2025

kvdveer

Z.O.Z.

PHP heeft toch ook locking functies? of werken die niet op win32?

Localhost, sweet localhost