我注意到很多人在讨论Gearman及其调度功能,使其能够将工作分配到其他服务器上.但是,我还没有看到与本机cronjobs的比较.
cron和Gearman有什么区别?
我在php中使用gearman pecl扩展,并希望函数调用超时.两个用例:(1)没有正在运行的工人,(2)工人需要很长时间才能完成
如果一切正在运行,那么调用非常快,我想避免这个超时的开销.
我目前使用的代码:
$client = new GearmanClient();
$client->addServer();
$client->do('nonexistingfunction');
Run Code Online (Sandbox Code Playgroud) 我正在考虑使用php构建一个站点,但是如果在node.js中制作的话,它有几个方面可以表现得更好.同时,网站的大部分内容需要保留在PHP中.这是因为PHP已经开发了许多功能,重新开发,测试等等都是一项艰巨的任务,坦率地说,网站的这些部分在PHP中运行得非常好.
我正在考虑重建node.js中可以从node.js中运行最多的部分,然后让PHP使用Gearman将请求传递给node.js.通过这种方式,我通过启动更多工作人员来扫描扩展,并让齿轮工人处理负载分配.
我们的网站获得了大量的流量,我担心齿轮工可以处理这种负载.我不想让这个问题富有成效,所以让我们主要关注以下几点:
我正在解决这些广泛的观点,因此任何观看这篇文章的人都可以在一个地方收集关于彼此强烈影响的事情的广泛信息.
当然,我会对所有这些进行测试,但我希望尽可能多地收集信息,然后才能进行类似的事情.
编辑:我使用gearman的一个重要原因不是因为它是非阻塞结构,而是因为它的速度非常快.
我在handels的系统上工作了很多更新,插入和删除请求.这就是为什么我选择INNODB作为我的存储引擎行锁的原因.我们每10分钟更新60,000条记录.我们正在使用Gearman来平衡我们在不同服务器上的工作.代码是PHP,我们使用的是Zend Framework.
所以让我们从我们问题的描述开始.我们正在记录错误,几乎每隔5-20分钟就会发生一次错误.
SQLSTATE[HY000]: General error: 1205 Lock wait timeout exceeded; try restarting transaction
Run Code Online (Sandbox Code Playgroud)
简单扩展"锁定等待超时"对我们没有帮助,因为我们尝试尽快更新.
为了获得更多信息,我做了SHOW INNODB STATUS\G
.有一件事让我问 - 黑客是什么?
---TRANSACTION 0 18126657, ACTIVE 54 sec, process no 16154,
OS thread id 47956454176512 fetching rows, thread declared inside InnoDB 68 mysql tables in use 1,
locked 1 1204 lock struct(s), heap size 112624, 65338 row lock(s), undo log entries 44
MySQL thread id 3331522, query id 103362521 [ServerIP] [USER] Updating
UPDATE userproducts SET lowest_price=16.96, last_lowest_price_update='2012-09-09 20:07:30' WHERE product_id …
Run Code Online (Sandbox Code Playgroud) 我有一个齿轮工人(称为"经理"),它读取一个网址列表,然后为每个人调用另一个齿轮工人(称为"依赖"),它获取传递的URL的内容并对其进行一些处理 - 索引,等等.每个网址属于同一个域(例如:www.test.com).当每个工作人员呼叫时,都会curl_init()
与www.test.com建立新连接.
我正在寻找一种方法来共享工作者之间的curl资源处理程序,以便重用相同的连接.在我的情况下,管理器可以创建资源处理程序,然后将其作为工作负载参数传递给依赖项.
我正在努力了解Gearman,但直到现在我还无法弄清楚任务与工作之间的区别.
我正在尝试创建一个客户端,它将定期(每10分钟)解析一个XML页面.哪种方法最好?
我一直在通过Cygwin终端在我的WIN 7机器上安装Gearman作业服务器.我已经成功提取了gearman-1.1.12的tar文件.现在我必须运行./configure来构建新的makefile.但它说
* CPP Flags: -fvisibility=hidden
* LIBS:
* LDFLAGS Flags:
* Assertions enabled: no
* Debug enabled: no
* Warnings as failure: no
* Building with libsqlite3 yes
* Building with libdrizzle yes
* Building with libmemcached not found
* Building with libpq yes
* Building with tokyocabinet no
* Building with libmysql yes
* SSL enabled: no
* cyassl found: no
* openssl found: yes
* make -j: 2
* VCS checkout: no
* sphinx-build: :
---
Run Code Online (Sandbox Code Playgroud)
我尝试通过'make'命令忽略并构建程序,它给出: …
我正在运行Gearman服务器和Gearman Manager,以及他们的PHP接口.设置如下所示.Gearman服务器可以在两台机器中的一台上,也可以在第三台机器上.
对于我的实现,我需要能够告诉一个工人同一台机器上的另一个工人是忙还是空闲.例如,我应该能够判断机器1上的工作者2是否从机器1上的工作人员1中解脱出来.可以使用PHP API或telnet接口吗?
在Telnet界面上,"WORKERS"命令为您提供了连接到服务器的所有工作人员及其ips的列表.我相信我可以用它来完成我的任务.我找到了一个PHP 脚本来使用telnet获取此信息.
请有人帮我在windows xp上安装gearman php扩展.我在我的系统上安装了xampp 1.7.7,我在我的系统上安装了Cygwin,libevent-1.4.14b-stable和gearmand.请让我知道安装gearman-1.0.2 php扩展所需的更多内容.当我在cygwin终端上运行gearman-1.0.2时发现命令未找到错误.
我拼命想让Gearman PHP扩展工作在Debian 6上.
我有所有的二进制文件和来源
root@debian:/tmp/pear/install# aptitude search gearman
i gearman - A distributed job queue
i A gearman-job-server - Job server for the Gearman
i gearman-tools - Tools for the Gearman
i libgearman-dev - Development files for the
i libgearman4 - Library providing Gearman
Run Code Online (Sandbox Code Playgroud)
...但是当PHP扩展程序中存在一些错误时,不允许我安装它
# /usr/local/pear/bin/pecl install gearman
downloading gearman-1.1.0.tgz ...
Starting to download gearman-1.1.0.tgz (30,488 bytes)
.........done: 30,488 bytes
3 source files, building
running: phpize
Configuring for:
PHP Api Version: 20090626
Zend Module Api No: 20090626
Zend Extension …
Run Code Online (Sandbox Code Playgroud)