Jemand zu Hause?Leser: 18
Win32::Process. Damit startet man dann ein zweites Script und lässt das durch den Apache gestartete Script beenden. Sobald du das Modul installiert hast, können wir weiter machen.
Win32::Process. Denn - und das ist das wichtige - unter Windows werden Prozesse standardmäßig als abhängiges Kind und nicht als Parallelprozess gestartet. Das heißt, jeder gestartete Prozess ist vom startenden Prozess abhängig und der startende Prozess wartet auf alle gestarteten Prozesse. Um das zu verhindern braucht es die Option DETACHED_PROCESS, die leider weder fork() noch system() noch exec() noch sonst ein Perl Bordmittel kennt. Hier zeigt sich einmal mehr, dass Perl und Windows noch keine richtigen Freunde sind.
Win32::Process steht im Grunde hier: msg #170807
2014-01-17T06:18:36 biancaDas heißt, jeder gestartete Prozess ist vom startenden Prozess abhängig und der startende Prozess wartet auf alle gestarteten Prozesse. Um das zu verhindern braucht es die Option DETACHED_PROCESS, die leider weder fork() noch system() noch exec() noch sonst ein Perl Bordmittel kennt. Hier zeigt sich einmal mehr, dass Perl und Windows noch keine richtigen Freunde sind.
1 2 3 4 5 6 7 8 9 10 11 12 13
#!/usr/bin/perl use strict; $|++; print "parent: test1\n"; system 1, 'perl -e "$|++; for (1..10) {print \"child $_\n\"; sleep 1;}"'; print "parent: test2\n"; sleep 2; print "parent: test3\n"; sleep 5; print "parent: test6\n";
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
PS E:\> perl .\test.pl
parent: test1
parent: test2
child 1
child 2
parent: test3
child 3
child 4
child 5
child 6
child 7
parent: test6
PS E:\> child 8
child 9
child 10
PS E:\>
QuoteHat jemand eine Idee?
QuoteAjax nützt nichts, auch das Script würde 90 Sekunden auf sein Ende warten.
2014-01-17T10:44:50 rostiDas Script ja, aber nicht der Browser ;)
use strict; use warnings;