Maison php教程 php手册 Forker 可以让 php-cli 进程借助 nohup 以守护进程的方式运行。

Forker 可以让 php-cli 进程借助 nohup 以守护进程的方式运行。

Jun 06, 2016 pm 07:39 PM
nohup Peut 进程

Forker可以让php-cli进程借助nohup以守护进程的方式运行。这个Forker仅仅是让进程成为守护进程,不会复制父进程的内存。 无 ?php// 运行实例,fork 10 个进程,每个进程输出一行 Im a worker ,并保存在 /tmp/forker.log 中:// CLI命令: php Forker.php 10/

Forker 可以让 php-cli 进程借助 nohup 以守护进程的方式运行。这个 Forker 仅仅是让进程成为守护进程,不会复制父进程的内存。
<?php

// 运行实例,fork 10 个进程,每个进程输出一行 Im a worker ,并保存在 /tmp/forker.log 中:
// CLI命令: php Forker.php 10
/*
if (empty($argv[1])) {
    echo "Im a worker\n";
    sleep(10);
    exit();
} else {
    $forker = new Forker('/tmp/forker.log');
    $forker->fork($forker->findCommand('php') . ' ' . __FILE__, (int)$argv[1] <= 0 ? 10 : (int)$argv[1]);
}
*/

/**
 * Forker 可以让 php-cli 进程借助 nohup 以守护进程的方式运行。
 * 这个 Forker 仅仅是让进程成为守护进程,不会复制父进程的内存。
 */
class Forker {
    
    private $nohub = '/usr/bin/nohup';
    private $out   = '/tmp/forker.log';
    
    /**
     * @param string $output 输出文件的路径。进程的标准输出将重定向到此文件
     * @throws \RuntimeException
     */
    public function __construct($output = '') {
        if (false !== ($nohup = $this->findCommand('nohup'))) {
            $this->nohub = $nohup;
        }
        if (!is_executable($this->nohub)) {
            throw new \RuntimeException('nohup not excutable');
        }
        if ($output) {
            $this->setOutput($output);
        }
    }
    
    /**
     * 设置输出文件的路径。进程的标准输出将重定向到此文件
     * @param string $file
     * @return \Forker
     * @throws \RuntimeException
     */
    public function setOutput($file) {
        if (!is_file($file)) {
            $dir = dirname($file);
            if ((!is_dir($dir) && !mkdir($dir, 0755, true)) || !is_writable($dir)) {
                throw new \RuntimeException('output is not writable, can not create output');
            }
        } else if (!is_writable($file)) {
            throw new \RuntimeException('output is not writable');
        }
        $this->out = $file;
        return $this;
    }
    
    /**
     * 获取输出文件的路径
     * @return string
     */
    public function getOutput() {
        return $this->out;
    }
    
    /**
     * 执行命令
     * @param string $command 命令。命令中的文件参数需要使用绝对路径
     * @param int $forks fork的进程数
     */
    public function fork($command, $forks = 1) {
        for ($i = 0; $i < $forks; ++$i) {
            $this->execute($command);
        }
    }
    
    /**
     * 根据当前环境查找命令的绝对路径
     * @param string $name
     * @return boolean
     */
    public function findCommand($name) {
        $file = trim(exec("which {$name}"));
        if (is_file($file) && is_executable($file)) {
            return $file;
        }
        return false;
    }
    
    /**
     * 执行命令,成功返回 true,失败返回 false
     * @param string $command
     * @return boolean
     */
    private function execute($command) {
        $lines = [];
        $code  = 0;
        exec("{$this->nohub} {$command} >> {$this->out} 2>&1 &", $lines, $code);
        if (0 !== (int)$code) {
            file_put_contents($this->out, "fork {$command} FAILD[{$code}]:\n" . implode("\n", $lines) . "\n", FILE_APPEND);
            return false;
        }
        file_put_contents($this->out, "fork {$command} OK\n", FILE_APPEND);
        return true;
    }
    
}
Copier après la connexion
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn

Outils d'IA chauds

Undresser.AI Undress

Undresser.AI Undress

Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover

AI Clothes Remover

Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

AI Hentai Generator

AI Hentai Generator

Générez AI Hentai gratuitement.

Article chaud

R.E.P.O. Crystals d'énergie expliqués et ce qu'ils font (cristal jaune)
1 Il y a quelques mois By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Meilleurs paramètres graphiques
1 Il y a quelques mois By 尊渡假赌尊渡假赌尊渡假赌
Will R.E.P.O. Vous avez un jeu croisé?
1 Il y a quelques mois By 尊渡假赌尊渡假赌尊渡假赌

Outils chauds

Bloc-notes++7.3.1

Bloc-notes++7.3.1

Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Expliquez ce qu'est le processus explorer.exe Expliquez ce qu'est le processus explorer.exe Feb 18, 2024 pm 12:11 PM

Quel processus est explorer.exe ? Lorsque nous utilisons le système d'exploitation Windows, nous entendons souvent le terme « explorer.exe ». Alors, êtes-vous curieux de savoir ce qu'est ce processus ? Dans cet article, nous expliquerons en détail ce qu'est le processus explorer.exe ainsi que ses fonctions et effets. Tout d'abord, explorer.exe est un processus clé du système d'exploitation Windows. Il est responsable de la gestion et du contrôle de l'Explorateur Windows (Window).

Quel est le processus de substitution par com ? Quel est le processus de substitution par com ? Sep 14, 2022 pm 02:56 PM

« com surrogate » est le processus de « C:\Windows\System32\dllhost.exe » ; lorsque ce processus se produit, cela signifie généralement que le composant « COM+ » cesse de fonctionner. Ce processus prend beaucoup d'espace et ne le fait même pas. Répondez directement. Cela est dû au fait que l'ordinateur charge l'icône du fichier. Parfois, un problème survient, provoquant le blocage de l'ordinateur. Vous pouvez résoudre le problème de blocage dans les paramètres des propriétés de l'ordinateur.

Quel type de processus est ccsvchst.exe ? Quel type de processus est ccsvchst.exe ? Feb 19, 2024 pm 11:33 PM

ccsvchst.exe est un fichier de processus commun qui fait partie du logiciel Symantec Endpoint Protection (SEP), et SEP est une solution de protection des points finaux développée par la célèbre société de sécurité réseau Symantec. Dans le cadre du logiciel, ccsvchst.exe est responsable de la gestion et de la surveillance des processus liés à SEP. Tout d’abord, jetons un coup d’œil à SymantecEndpointProtection(

Analyse de la fonction et du principe de nohup Analyse de la fonction et du principe de nohup Mar 25, 2024 pm 03:24 PM

Analyse du rôle et du principe de nohup Dans les systèmes d'exploitation Unix et de type Unix, nohup est une commande couramment utilisée pour exécuter des commandes en arrière-plan. Même si l'utilisateur quitte la session en cours ou ferme la fenêtre du terminal, la commande peut. continuent toujours à être exécutés. Dans cet article, nous analyserons en détail la fonction et le principe de la commande nohup. 1. Le rôle de nohup : Exécuter des commandes en arrière-plan : Grâce à la commande nohup, nous pouvons laisser les commandes de longue durée continuer à s'exécuter en arrière-plan sans être affectées par la sortie de l'utilisateur de la session du terminal. Cela doit être exécuté

Comment tuer correctement les processus zombies sous Linux Comment tuer correctement les processus zombies sous Linux Feb 19, 2024 am 10:40 AM

Dans les systèmes Linux, les processus zombies sont des processus spéciaux qui ont été interrompus mais restent toujours dans le système. Bien que les processus zombies ne consomment pas beaucoup de ressources, s'il y en a trop, ils peuvent entraîner un épuisement des ressources système. Cet article explique comment supprimer correctement les processus zombies pour assurer le fonctionnement normal du système. 1Processus zombie Linux Une fois que le processus enfant a terminé sa tâche, si le processus parent ne vérifie pas l'état à temps, le processus enfant deviendra un processus zombie. Le processus enfant attend la confirmation du processus parent et le système ne le recyclera pas tant qu'il ne sera pas terminé. Sinon, le processus zombie continuera à se bloquer dans le système. Pour vérifier s'il existe des processus zombies dans le système, vous pouvez exécuter la commande top pour afficher tous les processus en cours et les processus zombies possibles. Le résultat de la commande « top » peut être vu dans la figure ci-dessus sous Linux.

Explication détaillée de la méthode d'ajustement des priorités des processus Linux Explication détaillée de la méthode d'ajustement des priorités des processus Linux Mar 15, 2024 am 08:39 AM

Explication détaillée de la méthode d'ajustement de la priorité des processus Linux. Dans le système Linux, la priorité d'un processus détermine son ordre d'exécution et l'allocation des ressources dans le système. Un ajustement raisonnable de la priorité du processus peut améliorer les performances et l'efficacité du système. Cet article présentera en détail comment ajuster la priorité du processus sous Linux et fournira des exemples de code spécifiques. 1. Présentation de la priorité des processus Dans le système Linux, chaque processus est associé à une priorité. La plage de priorité va généralement de -20 à 19, où -20 représente la priorité la plus élevée et 19 représente

Puis-je supprimer le dossier de téléchargements ? Puis-je supprimer le dossier de téléchargements ? Feb 19, 2024 pm 03:38 PM

Les téléchargements peuvent-ils être supprimés ? Ces dernières années, avec l’avènement de l’ère numérique, de plus en plus de produits et services numériques sont apparus dans nos vies. Il s’ensuit que notre demande de contenu numérique augmente de jour en jour. Dans notre vie quotidienne et au travail, nous avons souvent besoin de télécharger une variété de fichiers, tels que des documents, des images, des audios, des vidéos, etc. Ces fichiers téléchargés sont généralement enregistrés dans un dossier appelé « téléchargements ». Cependant, avec le temps, nous constatons souvent cela.

Comment arrêter les mises à jour du processus du Gestionnaire des tâches et supprimer des tâches plus facilement dans Windows 11 Comment arrêter les mises à jour du processus du Gestionnaire des tâches et supprimer des tâches plus facilement dans Windows 11 Aug 20, 2023 am 11:05 AM

Comment suspendre les mises à jour du processus du Gestionnaire des tâches dans Windows 11 et Windows 10 Appuyez sur CTRL + Touche Fenêtre + Suppr pour ouvrir le Gestionnaire des tâches. Par défaut, le Gestionnaire des tâches ouvrira la fenêtre Processus. Comme vous pouvez le voir ici, toutes les applications se déplacent sans cesse et il peut être difficile de les indiquer lorsque vous souhaitez les sélectionner. Alors, appuyez sur CTRL et maintenez-le enfoncé, cela mettra le gestionnaire de tâches en pause. Vous pouvez toujours sélectionner des applications et même faire défiler vers le bas, mais vous devez maintenir le bouton CTRL enfoncé à tout moment.

See all articles