我正在开发一个需要延迟PHP事件的在线PHP应用程序.基本上我需要能够在初始命中URL之后执行任意PHP代码x很多秒(但可能是几天).我需要相当精确地执行这些PHP事件,我也希望它具有相当的可扩展性.我正在努力避免安排一个cron作业每秒运行一次.我正在研究Gearman,但它似乎没有提供任何计划事件的能力,据我所知,PHP并不真正意味着作为一个守护进程运行.
如果我能告诉一些外部进程在下一个事件应该运行的确切时间在PHP服务器上轮询"事件检查器"URL,那将是理想的.此轮询时间需要能够随意减少或增加,因为事件可以被删除并添加到队列中.有什么想法以优雅的方式来实现这一目标吗?从外部调用PHP(必须解析HTTP请求或通过CLI调用)只需要很多开销就可以满足我的需求.
我目前的计划是编写一个PHP守护程序,它将使用gearman从PHP服务器运行事件和接口.PHP守护进程将围绕SplMinHeap构建,所以希望性能不会太糟糕.这个想法在我的口中留下了不好的味道,我想知道是否有人有更好的主意?想法略有改变.阅读编辑2.
编辑:
我正在创建一个在线游戏,让玩家轮流使用可变时间限制.我正在使用XMPP和BOSH来允许我向客户推送消息,但是我已经完成了所有这些工作.现在我正在尝试添加一个任意事件,该事件在从客户端播放之后触发,以便让客户端(以及游戏中的其他人员)花费很长时间.我无法在客户端使用定时触发器,因为这样可以被利用(因为客户端可以自己玩).希望有所帮助.
编辑2:
谢谢大家的反馈.虽然我认为你的大多数想法在小范围内都能很好地发挥作用,但我觉得它们不能很好地扩展(外部事件管理器)或缺乏该项目所需的准确性(CRON).此外,在这两种情况下,它们都是外部部件,可能会失败并增加已经很复杂的系统的复杂性.
我个人觉得满足这个项目要求的唯一干净的解决方案是编写一个处理延迟事件的PHP守护进程.我已经开始编写我认为第一个 PHP runloop.它处理观察套接字和执行延迟的PHP事件.希望当我接近完成这个项目时,我可以发布源代码,如果你们有兴趣的话.到目前为止,在测试中它已经证明是有希望的解决方案(没有内存泄漏或不稳定的问题).
编辑3:这是一个名为LooPHP的PHP事件循环库的链接,供有兴趣的人使用.
TL; DR要求
?retcarahc"rorrim"edocinu eht htiw detaicossa ytilibarenluv fo tros emos ereht sI
?ksir yna ereht erA?rof ti si tahW
我如何转换会计GL号码
99999999999999999
至
999-99999-99-9999.999
在对MSSQL服务器2005的查询中
我不需要更新数据,只需在查询时转换STRING.
表:GLM_MASTER__ACOUNT字段:帐户
谢谢.
我正在尝试创建一个脚本,img在每个链接到某个站点后插入元素,其源数等于给href定链接的属性值.这就是我想出的:
$("a[href*=site.com/img/]").after("<img src="+$(this).attr("href")+">");
Run Code Online (Sandbox Code Playgroud)
问题是,$(this)不起作用(attr()返回undefined).为什么?如何引用选定的链接及其参数href?
在巨大的遗留应用程序中,通常会看到业务规则的变化导致未使用的代码.删除是最好的方法吗?或者是否有标记未使用代码的标准?如果需要,SCM确实有助于恢复旧代码.这也是特定于.NET代码库的.
我之前询问过有关如何以可读方式格式化日期的堆栈溢出问题.这就是它的要点.
我该怎么做
2010-06-14 19:01:00 UTC
Run Code Online (Sandbox Code Playgroud)
把它变成
June 14th, 2010
Run Code Online (Sandbox Code Playgroud)
我使用的答案是调用post.date并简单地添加以下内容 post.rb
@date = Time.now
@date.strftime("%B %d, %Y")
Run Code Online (Sandbox Code Playgroud)
它确实以单词显示日期,但我不想显示当前日期.我想要post.created_at日期.
如何修改上述内容(或者我需要在其他地方添加什么内容)才能使其正常工作?
mkdir topdir
mkdir another-git-directory
touch fileC
touch fileD
git add.
git commit -m"sub-dir init"
cd ..
touch fileA
touch fileB
git add.
git commit -m"top-dir init"
git ls-files
//现在我们可以看到fileC和fileD没有被顶级git跟踪//
git ls-files -o
//这不会向我们展示fileC和fileD as untracked files //
我的问题是:如何让"git ls-files -o"显示子目录中未跟踪的文件?为什么git表现得如此,因为我希望git ls-files显示所有未跟踪的文件(即使它在另一个sub-dir git中)?
我知道我可以使用"git add*/."来制作顶级git来跟踪sub-dir文件......但我很想知道上面这个问题的原因.谢谢!
目录结构
Run Code Online (Sandbox Code Playgroud)topdir + +-- .git +-- fileA +-- fileB + another-git-directory +-- .git +-- fileC +-- fileD
我发现这个线程无法跟踪Git子模块中的文件和这个url(cn)http://blog.ossxp.com/2010/01/425/,它解释了如何解决问题.
解决方案:
git rm --cached another-git-directory #no trailing slash
git add another-git-directory /. …
我有一个关于级联删除和外键引用的问题:让我们假设下面的表:
ITEMX | ITEMY
------------------ | ------------
ID FKID_ITEMY | ID
1 1 | 1
2 1 |
Run Code Online (Sandbox Code Playgroud)
在FKID_ITEMY上有一个级联删除,这样如果我在ITEMX中删除一行,ITEMY中的相应项将被删除.我的问题是:
ITEMX中删除行ID 1是否会删除ITEMY中的行ID 1?
或者只删除ITEMX中的行ID 1,因为行ID 2仍在ITEMY中引用行ID 1?
换句话说,我希望在没有更多引用时删除ITEMY的行ID 1.级联删除会实现吗?
在我的Windows 7计算机上,除非我关闭用户帐户控制,否则c:\ inetpub\wwwroot不可更新.那是怎么回事?
MongoDB中是否有一种方法可以使用具有"ON DELETE CASCADE"功能的外键?
我知道你可以使用DBRef作为一种外键,但是当删除引用指向的集合中的项时,引用返回null.但我希望删除引用所属的项目.我该怎么做呢?
或者每次我删除的东西都需要检查对它的引用?