- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我观察到我的学说对象的奇怪行为。在我的 symfony 项目中,我使用 ORM 和 doctrine 将我的数据保存在 mysql 数据库中。这在大多数情况下都是正常的。我也在我的项目中使用了gearman,这是一个允许应用程序并行完成任务的框架。我有一个 gearman job-server在运行我的 apache 的同一台机器上运行,我在同一台机器上使用 screen 在单独的“屏幕” session 中注册了一个 gearman worker窗口管理器。通过这种方法,我总是可以通过为 gearman-worker 注册的功能访问标准控制台。
在我调用的 gearman-worker 函数中,我可以通过 $doctrine = $this->getContainer()->get('doctrine')
访问 doctrine 对象并且它有效几乎正常。但是当我更改了数据库中的一些数据时,学说仍在使用以前存储在数据库中的旧数据。我完全糊涂了,因为我希望通过调用:
$repo = $doctrine->getRepository("PackageManagerBundle:myRepo");
$dbElement = $repo->findOneById($Id);
我总是从我的数据库中获取当前数据条目。这看起来像是一种奇怪的缓存行为,但我不知道我做错了什么。
我可以通过注册 gearman worker 和新函数来解决这个问题:
$worker = new\GearmanWorker();
$worker->addServer();
$worker->addFunction
之后,我恢复了数据库的当前状态,直到我更改了其他内容。我只在我的 gearman worker 函数中观察到这种行为。在应用程序的其余部分,一切都与我的数据库同步并且正常。
最佳答案
这就是我认为可能发生的情况。虽然可能是错误的。
gearman worker 将是一个长期运行的进程,它会挑选要完成的工作。它获得的第一份工作将导致 doctrine 将实体从数据库加载到其对象映射中。但是,对于 worker 收到的第二份工作,doctrine 不会执行数据库查找,而是会检查它的身份映射并发现它已经加载了对象,因此只会从内存中返回那个对象。如果工作进程外部的其他东西改变了数据库记录,那么您最终会得到一个过时的对象。
您可以告诉 doctrine 从其标识映射中删除对象,然后它将执行数据库查找。要再次强制从数据库加载对象而不是从身份映射提供对象,您应该使用 EntityManager#clear()。
关于php gearman worker 函数不与学说同步,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50446961/
有人可以指导我在出现异常时 Gearman 如何重试 抛出或发生错误时? 我在 Django 应用程序中使用 python gearman 客户端,我的工作人员是 作为 Django 命令启动。我从这
是否可以从本地系统调用远程 gearman 工作人员?我尝试使用我的远程 Azure 服务器 IP 进行调用: 本地系统上的客户端: gm_client = gearman.GearmanClient
有没有办法从 Gearman 作业服务器中删除所有 Gearman 作业?我有一个在后台运行 Gearman 作业的 PHP 应用程序。对于我的单元测试,我需要确保 a) 没有工作在等待执行它的工作人
本文实例讲述了gearman+mysql方式实现持久化操作。分享给大家供大家参考,具体如下: 1、为什么要持久化? gearman的job server中的工作队列存储在内存中,一旦服务器有未处
我只是设法在我本地的 Ubuntu 测试环境中安装了 gearman。我想知道我是否可以在开发阶段以任何方式在同一台计算机上同时运行 worker 和客户端? 最佳答案 我自己没试过;但是由于 Gea
首先,我知道 this题: Gearman: Sending data from a background worker to the client 我想知道的是,Gearman 还是这样吗?我计划将
我目前正在测试Gearman,以处理来自Web前端的并行任务/请求,Gearman cleint通过Ajax接收带有post params的请求,然后创建任务并将其发送给Gearman Worker。
我无法找到有关带有“--status”选项的 gearadmin 命令行工具含义的任何文档。工作函数名称后面的三个数字的含义是什么? 例如,然后我运行以下命令: gearadmin --status
我目前正在开发一个使用 Gearman 进行异步数据处理的系统。 我可以连接到 Gearman 服务器来检查当前的工作人员数量和各种队列的大小,这对于确定处理是否正在备份等非常有用,但我还想要一些有关
我有一些在 php 上实现的 Gearman 工作人员。这些工作人员的每个任务都应该在自己的事务中执行。为了让这些工作人员访问我的 MySQL 数据库,我需要像连接池这样的东西。您能否为此提出一些建议
我正在尝试将 gearman 用于后台任务并从 worker 获取数据进度。在文档中我看到了方法:send_job_data 和 send_job_status,但是后台优先方法不起作用(我没有在 j
我有一个简单的 python 脚本来发送 gearman 任务: 客户: # "source" is a simple tuple client = GearmanCl
我正在尝试使用 Python gearman 模块进行字符串反转的各种基本示例我的本地主机已在端口 4730 上使用 IIS 设置但是我收到错误 raise UnknownCommandError(m
我在我的项目中使用 Gearman Job 服务器。我使用 'gearman-ruby' gem 。应用程序中有一个任务队列。一项任务有 4 个部分。 适本地,我有 4 个 worker 来解决这部分
我试图理解 Gearman,但直到现在我还无法弄清楚任务和工作之间的区别。 我正在尝试创建一个客户端,它将定期(每 10 分钟)解析一个 XML 页面。哪种方法最好? 最佳答案 手册offers a
我有一个 Gearman 服务器运行一个需要几分钟才能完成的进程。我正在运行一个进度条来显示完成情况,并尝试使用 Gearman PHP 扩展和 jobStatus() 函数获取进度条的百分比。 由于
描述 正在尝试安装 laelaps/symfony-gearman-bundle通过 composer require laelaps/symfony-gearman-bundle 有一些错误,我很难
我有一个简单的 Gearman 客户端和工作器。我在我的 Ubuntu 桌面上同时运行。我已经安装了 gearman-beta pecl 软件包和来自 synaptic 的 Gearman 版本。 我
研究 PHP/Gearman。我试图了解 Gearman 服务器/进程如何确定什么构成“有效”客户端。 在我看过的文档中,文档显示了许多连接到 Gearman 服务器的客户端。但是,我没有找到任何描述
我是 Gearman 的新手。我对优化的 Gearman 用法有以下疑问: 1) 我认为 worker 期望工作是一个“字符串”。我可以将数组或哈希作为作业发送给工作人员吗?如果不是,JSON 是发送
我是一名优秀的程序员,十分优秀!