首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Python & PHP的同步日志策略

问Python & PHP的同步日志策略
EN

Stack Overflow用户
提问于 2011-10-21 15:57:16
回答 2查看 2.2K关注 0票数 3

情况是这样的:我们有一批python脚本不断地使用mysql进行操作并最终编写数据,我们需要一个日志来分析错误率和脚本性能。

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

理想情况下,出于性能和低延迟的原因,我们将异步写入日志表。在Python (我们使用的是姜戈 ORM)和PHP (我们使用的是Yii框架)中,有什么方法可以做到吗?

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

更新:对于用户操作(Web ),我们现在考虑通过简单的配置将Apache自动加载到mysql中,其中包含相关的会话信息

EN

回答 2

Stack Overflow用户

发布于 2011-10-21 16:06:57

在PHP中,(AFAIK)只有两种方法可以同步执行任何事情:

  • 分叉处理(需要pcntl_fork)
  • exec()进程并通过(假设*nix)将> /dev/null &追加到命令字符串的末尾来释放它。

这两种方法都会导致创建一个新的进程,尽管这是暂时的,因此这是否能提供任何性能的提高是值得商榷的,并且在很大程度上取决于您的服务器环境--我怀疑这会使事情变得更糟,而不是更好。如果您的数据库负载非常重(因此也是减慢您的速度),您可能会通过将日志消息转储到文件中,并让一个守护进程脚本爬行到DB中,从而获得更快的结果--但是,这是否会有帮助是值得商榷的。

Python支持多线程。使生活变得容易多了。

票数 2
EN

Stack Overflow用户

发布于 2011-10-21 17:50:42

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

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

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7852073

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档