php rodar funcoes como processos

Solutions on MaxInterview for php rodar funcoes como processos by the best coders in the world

showing results for - "php rodar funcoes como processos"
Sara
31 Sep 2016
1class Background
2{
3
4    /*
5    $cmd -> A linha de comando a executar.
6    $opt -> Opção de parâmetros para o ambiente onde executa o script.
7    */
8    public static function Call($cmd, $opt = 'start')
9    {
10
11        if (stripos(php_uname('s'), 'windows') !== false) {
12            /*
13            Condições de parâmetros para ambiente Windows.
14            */
15            switch ($opt) {
16                default:
17                case 'start':
18                    $prefix = 'start /B '; // Esse aqui é o padrão, pois é compatível com as versões mais recentes do Windows.
19                    $sufix = '';
20                    break;
21                case 'nul':
22                    $prefix = '';
23                    $sufix = ' > NUL 2> NUL';
24                    break;
25            }
26        } else {
27            /*
28            Opções para ambiente *nix. (isso inclui os-x)
29            Normalmente o sufixo ` &` é compatível com diversas distribuições Linux. Esse parâmetro diz ao sistema operacional executar em background.
30            */
31            switch ($opt) {
32                default:
33                case '&':
34                    $prefix = '';
35                    $sufix = ' &';
36                    break;
37                case 'dev-null':
38                    $prefix = '';
39                    $sufix = ' > /dev/null 2>/dev/null &';
40                    break;
41            }
42        }
43
44        exec(sprintf('%s%s%s', $prefix, $cmd, $sufix));
45
46        return null;
47    }
48
49}
50
51define('PHP_PATH', '/local/do/binario/php');
52
53echo 'start '.microtime(true);
54Background::Call(PHP_PATH.' "/local/de/um/arquivo.php"');
55Background::Call(PHP_PATH.' "/local/de/um/arquivo.php"');
56Background::Call(PHP_PATH.' "/local/de/um/arquivo.php"');
57echo PHP_EOL.'end '.microtime(true);
58