maximgrynykha / winkill
使用PHP扫描并杀死Windows进程
v3.0.22
2024-05-18 18:22 UTC
Requires
- php: ^8.1
- ext-mbstring: *
Requires (Dev)
- squizlabs/php_codesniffer: ^3.0
- symfony/var-dumper: ^6.0
This package is auto-updated.
Last update: 2024-09-18 19:12:58 UTC
README
Winkill
将进程作为对象进行操作。通过属性查找特定的进程并结束它们。
⚙️ 安装
要安装此库 - 在您的终端中运行以下命令
composer require maximgrynykha/winkill
用法
<?php use Winkill\Winkill; require_once 'vendor/autoload.php'; try { $winkill = new Winkill(); $processes = $winkill->scan();
// Get scanned processes $scanned = $processes->get(); dd($scanned);
// Select specific process(es) $selected = $processes->where( attribute: 'process_name', compareAs: '=', value: 'phpstorm64.exe' )->get(); dd($selected);
// Kill specific process(es) $killed = $processes->where( attribute: 'process_id', compareAs: '=', value: 11492 )->kill(); // Note: If the processes have been killed or not found // by the where-condition then returns an empty array. dd($killed);
} catch (\Winkill\Kernel\Interface\Exception|\Throwable $throwable) { die($throwable->getMessage()); }
API(基于 'tasklist' 命令)
选择进程
$processes->where('process_name', '=', 'chrome')->get(); $processes->where('process_id', '=', 11455)->get(); $processes->where('session_name', '=', 'console')->get(); $processes->where('session_number', '=', 1)->get(); // ⚠️ Note: consumed memory is estimated in Kb(kilobytes) $processes->where('consumed_memory', '=', 128920)->get();
结束进程
$processes->where('process_name', '=', 'chrome')->kill(); $processes->where('process_id', '=', 11455)->kill(); //❗Alert: killing process(es) by attribute [session_name] // may break you 🤯 and/or your computer 💥. Use it only // if you are 100% confident at the ending result. $processes->where('session_name', '=', 'console')->kill(); //❗Alert: killing process(es) by attribute [session_number] // is the same danger as was said previously about attribute // [session_name], so be warned about using it at your risk. $processes->where('session_number', '=', 1)->kill(); // ⚠️ Note: consumed memory is estimated in Kb(kilobytes) $processes->where('consumed_memory', '=', 128920)->kill();
🧱 代码片段
// Terminate processes by an array of process names (all names are an example) array_walk($processes_names = ['chrome', 'firefox', 'slack'], static fn(string $process_name): Process => $processes->where('process_name', '=', $process_name)->kill(), ); // Terminate processes by an array of process ids (all ids are an example) array_walk($processes_ids = [1000, 5595, 17820], static fn(string $process_id): Process => $processes->where('process_id', '=', $process_id)->kill(), ); // You can switch between array_walk and array_map for your needs. // [Confusing in difference?](https://stackoverflow.com/a/3432266/11591375)
$processes = $processes->where('consumed_memory', '<', 1000)->get(); // Sort processes on consumed memory by ASC usort($processes, static fn(Process $process, Process $_process): int => $process->consumed_memory <=> $_process->consumed_memory ); // Sort processes on consumed memory by DESC usort($processes, static fn(Process $process, Process $_process): int => $_process->consumed_memory <=> $process->consumed_memory );
📝 脚注
项目利用了 DRY
和 SOLID
原则。使用的 设计模式
列在下面。
🤝 贡献
如果您在使用此库时遇到无法解决的问题,请写下您的解决方案,如果您想帮助其他使用此库的开发者(或者如果您想在新版本发布后保持您的解决方案有效,这将作为包管理器依赖项) - 创建一个 pull-request。我将很高兴将您的优秀代码添加到库中!
🐞 在 GitHub问题 上报告您发现的任何错误或问题。
📃 许可证
MIT许可证(MIT)。有关更多信息,请参阅 许可证文件。