Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
Groups > de.comp.lang.php > #4729
| From | Arno Welzel <usenet@arnowelzel.de> |
|---|---|
| Newsgroups | de.comp.lang.php |
| Subject | Re: Offene File Handles nach kopieren mit phpseclib3 |
| Date | 2021-08-20 09:47 +0200 |
| Message-ID | <io9509F9urmU2@mid.individual.net> (permalink) |
| References | <sffmbf$p6r$1@gwaiyur.mb-net.net> <io94s4F9urmU1@mid.individual.net> |
Arno Welzel:
> Jan Novak:
>
>> Hallo,
>>
>> ein primärer php (cli) Prozess forkt immer wieder neu einen Prozess,
>> welcher Dateien u.a. mit der "phpseclib3" Klasse von Server a nach b
>> kopiert. Leider bleibt nach dem Kopieren immer ein File Handle offen,
>> was nach gewisser Zeit Probleme natürlich macht, obwohl der ge'forkte
>> Prozess sich sauber beendet hat.
>>
>> Die einzige Möglichkeit dies zu verhindern, bzw. zu resetten ist im
>> Moment, den primären CLI Prozess neu zu starten, was aber in unserem
>> Fall andere Nachteile mit sich zieht.
>>
>> Meine Frage:
>> Gibt es ein Möglichkeit, die offenen Handles korrekt schliessen zu lassen?
>
> Ja, indem der Prozess, der sie öffnet, das korrekt tut. Einen anderen
> Weg gibt es nicht.
>
>> zur Info: Sofern die Dateien mit anderen Klassen z.B. per ftp oder nur
>> lokal kopiert werden, besteht das Problem nicht. Nur dann, wenn die
>> phpseclib3 benutzt wird.
>
> Dann nutze phpseclib3 nicht oder frage dort, warum die Handles nicht
> sauber schließen und/oder ihre forks nicht sauber abschließen. Nein,
> einen geforkten Prozess einfach nur zu beenden, reicht nicht. Der
> Aufrufer, der den Fork erstellt hat, muss auch auf dessen Beendigung
> reagieren, sonst passieren u.A. genau solche Probleme.
Ergänzung dazu: aus einem Projekt, wo ich mit sowas zu tun hatte:
protected function signalHandler($signal)
{
if (SIGCHLD === $signal) {
// Clean up child processes
$pid = pcntl_waitpid(-1, $status, WNOHANG);
while ($pid > 0) {
$exitCode = pcntl_wexitstatus($status);
$pid = pcntl_waitpid(-1, $status, WNOHANG);
}
} else {
$this->run = false;
}
}
...
if (function_exists('pcntl_signal')) {
pcntl_signal(SIGTERM, [$this, 'signalHandler']);
pcntl_signal(SIGHUP, [$this, 'signalHandler']);
pcntl_signal(SIGINT, [$this, 'signalHandler']);
pcntl_signal(SIGCHLD, [$this, 'signalHandler']);
}
--
Arno Welzel
https://arnowelzel.de
Back to de.comp.lang.php | Previous | Next — Previous in thread | Next in thread | Find similar
Offene File Handles nach kopieren mit phpseclib3 Jan Novak <repcom@gmail.com> - 2021-08-17 08:52 +0200
Re: Offene File Handles nach kopieren mit phpseclib3 k@rl.pflaesterer.de (Karl Pflästerer) - 2021-08-19 12:50 +0200
Re: Offene File Handles nach kopieren mit phpseclib3 Arno Welzel <usenet@arnowelzel.de> - 2021-08-20 09:45 +0200
Re: Offene File Handles nach kopieren mit phpseclib3 Arno Welzel <usenet@arnowelzel.de> - 2021-08-20 09:47 +0200
Re: Offene File Handles nach kopieren mit phpseclib3 Jan Novak <repcom@gmail.com> - 2021-08-20 15:33 +0200
csiph-web