我一直在学习使用PHP编程并创建了一个可以创建多个独立内容的应用程序,问题是完成任务大约需要20-30秒,因为代码是按顺序执行的。
我正在阅读并发现php中没有线程,有没有办法绕过?
修改:添加信息:
基本上,我的应用程序将从新闻,天气等(使用file_get_contents($url)
)搜索信息,但是按顺序执行功能,换句话说,首先获取新闻,然后依次获取有关天气的信息,而不是同时运行它。
答案 0 :(得分:3)
使用某种排队软件,如Gearman或RabbitMQ,然后 - 将这些操作放入消费者手中。
答案 1 :(得分:2)
使用CURL_MULTI,速度更快。 http://php.net/manual/en/function.curl-multi-init.php
如果您正在阅读大量页面,它将显着减少加载\处理时间。
答案 2 :(得分:-1)
您还可以尝试通过同时向您的网络服务器发送不同的请求来破解某些线程行为。例如,您的index.php
会提供一个简单的页面,其中包含许多AJAX调用,例如fetchNews.php
和fetchWeather.php
。然后,这些请求将由浏览器以并行方式异步运行,并且您只需启动不同的Web服务器请求即可绕过线程的phps限制。
答案 3 :(得分:-3)
你提到你正在做一堆file_get_contents($url)
- 电话。这些都很慢。如果不是在每次加载页面时都拉动这些文件,那么将它们缓存到本地存储并从那里读取它将是一个巨大的节省时间:这几乎是即时的。当然,您需要记住您需要的新鲜信息。
例如,您可以运行一个每分钟左右获取这些文件的cron作业。然后你可以让你的网站呈现这个获取的信息:信息最多只有1分钟+运行该脚本过期所需的时间。