3

我正在寻找一种从浏览器多次运行 php 脚本的方法。这是场景:

我正在从一系列从 100 megs 到 2 gigs 的大文件构建一个 mySQL 表。平均而言,表中将有大约 150,000 条记录。

我现在这样做是通过一个对 PHP 脚本进行 AJAX 调用的 javascript 函数来实现的。成功后,该函数会设置一个超时来运行自身并触发 AJAX 调用以运行第二百个。

我背后的想法是让函数在它再次运行之前关闭。

这不是很好。整个函数本身可以工作,但在性能方面它很慢。

当我一次不做 100 条记录并且不使用 javascript 时,只使用 PHP,我可以在表超时之前将大约 15,000 条记录放入表中。现在它需要大约 10 分钟才能完成相同数量的记录。

我知道持续运行的 javascript 会像疯了一样消耗内存和性能,我只是想知道是否有人对如何从浏览器一遍又一遍地运行 PHP 脚本有任何想法。Cron 在这一点上不是一个选项。

4

4 回答 4

1

它称为(异步)工作/作业队列,似乎您需要探索Gearman

于 2012-03-22T19:02:36.667 回答
0

我遇到了类似的情况......我的解决方案是使用 ajax 队列。本质上,您将一系列 ajax 调用馈送到一个队列中,该队列按顺序运行它们,在前一个从服务器成功返回后开始下一个。

设置超时可能会遇到下一个 ajax 调用在服务器完成最后一个调用之前进行的情况。这可能是您的性能问题的原因。我真的不喜欢仅仅因为资源过度使用而自己的 javascript 超时。

谷歌“Ajax Queue”查找您认为有用的代码,或者我可以发布我的,即 jQuery。

于 2012-03-22T19:39:10.730 回答
0

难道你不能让 PHP 脚本本身多次重复这个函数吗?如果问题是函数有时会失败或超时,您能否在脚本中捕获异常?或者您是否有一个不可避免且完全致命的错误,确实需要使用外部监护人?

于 2012-03-22T19:07:09.960 回答
-1

配置一个 cronjob 以每分钟运行一次脚本

于 2012-03-22T19:02:12.867 回答