pato05/amphp-clamav

使用amphp/socket编写的异步clamd包装器

v2.0.0 2024-03-08 00:49 UTC

This package is auto-updated.

Last update: 2024-09-08 02:00:31 UTC


README

license: MIT

使用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扫描(在这种情况下,是一个实现ReadableStreamFile实例):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