pato05 / amphp-clamav
使用amphp/socket编写的异步clamd包装器
v2.0.0
2024-03-08 00:49 UTC
Requires
- php: ^8.0
- ext-sockets: *
- amphp/amp: ^3.0
- amphp/socket: ^2.0
Requires (Dev)
- amphp/file: ^3.0
- amphp/php-cs-fixer-config: ^2.0
- amphp/phpunit-util: ^3.0
- phpunit/phpunit: ^9.6
This package is auto-updated.
Last update: 2024-09-08 02:00:31 UTC
README
使用amphp/socket编写的异步ClamAV包装器
从v1.x.x迁移
由于底层amphp/amp
的变化,更新后的v2.0.0引入了一些破坏性变化。这些底层变化为异步事件循环提供了巨大的提升,现在它基于Fibers
而不是Generators
。
通常,你只需要在调用库的异步函数之前移除任何yield
关键字。更多关于Amp的升级指南的信息。
安装
composer require pato05/amphp-clamav
示例
文件/目录的ping和扫描:examples/scan.php
从ReadableStream
扫描(在这种情况下,是一个实现ReadableStream
的File
实例):examples/scan_stream.php
使用TCP/IP套接字代替
如果你想使用TCP/IP套接字而不是UNIX套接字,你应该在任何其他调用之前使用ClamAV\clamav()
函数,或者简单地使用自定义的ClamAV
实例
\Amp\ClamAV\clamav('tcp://IP:PORT'); // to access it statically // or $clamav = new \Amp\ClamAV\ClamAV('tcp://IP:PORT');
请注意,TCP/IP套接字可能比UNIX套接字稍慢。
使用MULTISCAN
MULTISCAN受到支持,但只能在非会话实例上使用(由于ClamAV的限制)。
MULTISCAN允许你进行多线程扫描。
$result = \Amp\ClamAV\multiScan('FILEPATH');
会话和无会话运行的差异
会话在相同的套接字连接上运行,而非会话实例将针对每个命令重新连接到套接字。库支持两者,具体使用哪一种取决于你。
会话实例化非常直接,只需像这样使用ClamAV::session()
方法
$clamSession = \Amp\ClamAV\session();
尽管你必须使用方法Session::end()
结束每个会话
$clamSession->end();
请注意,在会话中,一次只能执行一个命令,因此,如果你想并行运行多个命令,请使用主ClamAV
类。
也可以实例化多个Session
。