PHP 线程和高延迟文件访问(例如;FTP)

标签 php multithreading resources

这有点复杂,所以请不要妄下结论,有什么不够清楚的地方可以问。

基本上,我有一个用 PHP 编写的 websocket 服务器。请注意,websocket 消息是异步的,也就是说,对请求的响应可能需要很长时间,而客户端一直在工作(如果适用)。

客户端应该向服务器请求访问其他服务器上的文件。就此而言,这可以是 FTP 服务或 Dropbox。

在这里,请注意两个问题:应该共享和重用连接服务器在执行其工作时实际上“卡住”,因此任何请求都会被处理在服务器“解冻”之后。

因此,我想,为什么不将文件访问(这会卡住服务器)卸载到 PHP threads

这里的问题是双重的;

  • 如何使主线程(服务器)中的连接资源可供子线程使用(上述线程模型不可能)?
  • 如果两个线程最终需要相同的资源会怎样?如果一个在另一个完成之前被锁定,那很好,但我们仍然需要解决问题 #1。

也许我的思路全搞砸了,如果你能找到更好的解决方案,我很想听听。我也有过让 PHP 线程托管连接资源的想法,但它非常占用内存。

最佳答案

PHP 不支持线程。 PHP 的目的是快速响应网络请求。这就是构建架构的目的。不同的库尝试做线程之类的事情,但它们通常导致的问题多于解决的问题。

一般来说有两种方法可以达到你想要的效果:

关于PHP 线程和高延迟文件访问(例如;FTP),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10575974/

相关文章:

c++ - Windows 上的快速计数信号量?

android - AIDL 与信使

resources - 星资源路径的目的是什么?

javascript - 在文本框中写入后动态插入占位符

java - 如何使用线程在java中暂停执行

java - getClass().getResource() 总是返回 null

iphone - 有没有办法在 Xcode 的 resources 文件夹中创建子文件夹?

php - cakephp中多个模型的单一分页

PHP - 按数组键对数组进行排序

php - 如何引用我刚刚插入到 MySQL 表中的行?