静态属性如何在队列中工作?

时间:2019-07-24 21:39:18

标签: php multithreading static queue

一个示例是使用代理进行请求的类,但是此代理在静态变量中设置为它。

队列中将发生什么?例如,排队的任务有100个,它们并行执行。

每个任务都会为自己设置一个代理并发出请求,当它在另一个任务中发生时,是否不会为每个实例“覆盖”代理属性?

class Request {
  private static $proxy;

  public static setProxy($proxy) {
    self::$proxy = $proxy;
  }

  public static doRequest($url, $params) {
    // send a request using a proxy
  }
}
// task#1 in queue
class Task {
  public function run() {
    Request::setProxy('someProxyUrl1');
    Request::doRequest(...);
  }
}

// task#2 in queue
class Task {
  public function run() {
    Request::setProxy('someProxyUrl2');
    Request::doRequest(...); // it will someProxyUrl1 or someProxyUrl2?
  }
}

// task#3 in queue
class Task {
  public function run() {
    Request::setProxy('someProxyUrl3');
    Request::doRequest(...); // request using someProxyUrl3 or someProxyUrl1 / someProxyUrl2?
  }
}

// ...

// queue 100

0 个答案:

没有答案