Adicione algumas opções depois do seu start
:
start /min cmd /c php -f 1.php
...
Isso suprimirá os prompts de comando adicionais.
Como posso executar simultaneamente dezenas de scripts PHP em segundo plano a partir da interface de linha de comando do XAMPP?
Alguém sugeriu um arquivo em lote, mas quando tentei executar isso:
start php 1.php
start php 2.php
start php 3.php
Ele só abriu uma janela de prompt de comando; Fechei essa janela, depois mais duas janelas de prompt de comando foram abertas executando 2.php e 3.php.
Eu quero executar quantos scripts quiser, tudo simultaneamente e tudo em segundo plano. Qual é a melhor maneira de conseguir isso e como isso pode ser feito?
EDIT Aqui está como fazer isso:
1) Baixe o PowerShell 2 (ou a versão compatível com sua versão do Windows) aqui: link
2) Instale e reinicie o seu computador.
3) Crie um novo arquivo "example.ps1" e salve-o em um diretório de sua escolha (por exemplo, c: \ examples \ example.ps1). Coloque este código nesse arquivo:
start-job {.\c:\xampp\php\php C:\xampp\htdocs\phpfiles.php}
start-job {.\c:\xampp\php\php C:\xampp\htdocs\phpfiles.php}
start-job {.\c:\xampp\php\php C:\xampp\htdocs\phpfiles.php}
start-job {.\c:\xampp\php\php C:\xampp\htdocs\phpfiles.php}
start-job {.\c:\xampp\php\php C:\xampp\htdocs\phpfiles.php}
start-job {.\c:\xampp\php\php C:\xampp\htdocs\phpfiles.php}
start-job {.\c:\xampp\php\php C:\xampp\htdocs\phpfiles.php}
start-job {.\c:\xampp\php\php C:\xampp\htdocs\phpfiles.php}
start-job {.\c:\xampp\php\php C:\xampp\htdocs\phpfiles.php}
start-job {.\c:\xampp\php\php C:\xampp\htdocs\phpfiles.php}
start-job {.\c:\xampp\php\php C:\xampp\htdocs\phpfiles.php}
4) Clique em "Iniciar" - > "Executar" e digite "powershell" (sem aspas).
5) Após o PowerShell iniciar, digite o seguinte e pressione enter:
Set-ExecutionPolicy RemoteSigned
Em seguida, pressione "y" para definir as alterações.
6) Agora digite (certifique-se de digitar o caminho completo do arquivo):
c:\examples\example.ps1
7) Para ver seus trabalhos, basta digitar:
get-job
Para interromper um trabalho, use este comando:
stop-job JobName