【问题标题】:Php takes too long to be executed, need thread [closed]php执行时间太长,需要线程[关闭]
【发布时间】:2013-12-17 06:10:21
【问题描述】:

我一直在学习PHP编程,做了一个应用程序,做了几个独立的事情,问题是完成任务大约需要20-30秒,因为代码是按顺序执行的。

我在看,发现php中没有线程,有什么办法绕过吗?

编辑:添加信息:

基本上,我的应用程序会从新闻、天气等(使用file_get_contents($url))中查找信息,但按顺序执行功能,换句话说,首先获取新闻,然后获取有关天气的信息,然后依次执行,而不是运行同时进行。

【问题讨论】:

  • 不知道您在做什么,您希望我们如何帮助您?
  • 通常不会花太多时间...告诉我们更多关于您想要实现的目标...这可能会有所帮助..
  • 已编辑并添加了一些信息,我无法粘贴所有代码,因为它有点复杂
  • 您的应用程序在什么操作系统上运行?
  • 使用 CURL_MULTI 代替,更快。 http://php.net/manual/en/function.curl-multi-init.php

标签: php performance


【解决方案1】:

使用某种作业排队软件,例如 Gearman 或 RabbitMQ,然后 - 将这些操作放入消费者中。

【讨论】:

    【解决方案2】:

    改用 CURL_MULTI 会快得多。 http://php.net/manual/en/function.curl-multi-init.php

    如果您阅读大量页面,它将显着减少加载\处理时间。

    【讨论】:

    • 在链接的新干净 php 文件上测试了 example1,并且“致命错误:C:\Program Files (x86)\XAMPP\htdocs\index.php 中的最大执行时间超过了 30 秒在第 26 行“:s
    • 编辑 php.ini,设置 max_execution_time 为 0
    • 伤心,该链接上的代码都不起作用Q_Q
    • 你安装了 CURL 扩展吗?
    【解决方案3】:

    您还可以通过同时向您的网络服务器发起不同的请求来尝试破解某些线程行为。例如,您的index.php 将提供一个简单的页面,其中包含许多对fetchNews.phpfetchWeather.php 的AJAX 调用。然后,这些请求将由浏览器异步并行运行,您只需启动不同的 Web 服务器请求即可绕过 phps 对线程的限制。

    【讨论】:

      【解决方案4】:

      你提到你正在打一堆file_get_contents($url)-calls。这些都很慢。如果不是每次加载页面时都将这些文件拉入,而是将它们缓存到本地存储并从那里读取它们,那将是一个巨大的节省时间:这几乎是即时的。当然,您需要牢记您需要的信息有多新鲜。

      例如,您可以运行一个 cron 作业,每分钟左右获取这些文件。然后,您可以让您的网站呈现这些获取的信息:该信息最多只有 1 分钟 + 运行该脚本所需的时间。

      【讨论】:

      • “我的应用程序将从新闻、天气中寻找信息” - 所以他需要新鲜的信息,而不是缓存。
      • 我怀疑那些网站每 3 秒更新一次。
      • 一开始他为什么要每 3 秒运行一次代码?如果他这样做了,那么他不应该这样做。拥有缓存并不是最好的解决方案。
      • 形象地说。例如,如果他每分钟从 cron 作业中提取这些文件,并在网络服务器代码中使用缓存版本,他将大大提高性能。
      • 感谢回复,但信息总是在变化:p,会被使用几次
      猜你喜欢
      • 2015-09-05
      • 2021-04-08
      • 2021-06-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-01-19
      • 1970-01-01
      • 2014-01-15
      相关资源
      最近更新 更多