Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/326.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python的任意同步日志记录策略&;PHP_Php_Python_Logging_Asynchronous_Queue - Fatal编程技术网

Python的任意同步日志记录策略&;PHP

Python的任意同步日志记录策略&;PHP,php,python,logging,asynchronous,queue,Php,Python,Logging,Asynchronous,Queue,情况是这样的:我们有一堆python脚本不断地做一些事情,并最终在mysql中写入数据,我们需要一个日志来分析错误率和脚本性能 我们还有与mysql数据交互的php前端,我们还需要记录用户的行为,以便我们可以分析他们的行为,并计算一些评分函数。 因此,我们考虑为每种情况设置一个mysql表(一个用于“python脚本”日志,一个用于“用户操作”日志) 理想情况下,出于性能和低延迟的原因,我们将异步写入这些日志表。在Python(我们使用的是ORM)和PHP(我们使用的是ORM)中有这样做的方法吗

情况是这样的:我们有一堆python脚本不断地做一些事情,并最终在mysql中写入数据,我们需要一个日志来分析错误率和脚本性能

我们还有与mysql数据交互的php前端,我们还需要记录用户的行为,以便我们可以分析他们的行为,并计算一些评分函数。 因此,我们考虑为每种情况设置一个mysql表(一个用于“python脚本”日志,一个用于“用户操作”日志)

理想情况下,出于性能和低延迟的原因,我们将异步写入这些日志表。在Python(我们使用的是ORM)和PHP(我们使用的是ORM)中有这样做的方法吗

有没有更好的方法来解决这个问题

更新: 对于用户操作(Web UI),我们现在正在考虑通过简单的Apache配置自动将Apache日志加载到mysql中,并提供相关的会话信息。在PHP中,只有两种方法(AFAIK)可以同步执行任何操作:

  • 分叉过程(需要)
  • 一个进程,并通过(假设*nix)在命令字符串的末尾追加
    >/dev/null&
    来释放它
这两种方法都会导致创建一个新的进程,尽管是暂时的,因此这是否能够提供任何性能提升是有争议的,并且在很大程度上取决于您的服务器环境—我怀疑这会让事情变得更糟,而不是更好。如果您的数据库负载非常重(因此会使您速度变慢),您可能会通过将日志消息转储到文件中,并使用一个守护程序脚本爬行以将内容输入到数据库中,从而获得更快的结果—但同样,这是否有帮助仍有争议


这使生活变得更加轻松。

您可以打开原始Unix或网络套接字,将消息缓存到日志服务,并将其异步写入磁盘或数据库。如果您的PHP和Python进程是长时间运行的,并且每次执行都会生成许多消息,那么保持一个打开的套接字将比同步发出单独的HTTP/数据库请求更有效


您必须将其与附加到文件(打开一次,然后在运行时锁定、查找、写入和解锁,最后关闭)进行比较,以确定哪个更快。

通过独立HTTP服务器进行日志记录如何?@jaz-我希望附加到日志文件比发送HTTP请求更快。+1-我忘记了非阻塞套接字,对于非阻塞文件流,这可能也会起作用(至少在PHP中,Py并不是我的专长)。