timeout is defined depends on when the request is done

Signed-off-by: Maxence Lange <maxence@artificial-owl.com>
pull/124/head
Maxence Lange 2018-12-04 09:58:00 -01:00
rodzic c45cfe6b49
commit c240faab18
7 zmienionych plików z 48 dodań i 12 usunięć

Wyświetl plik

@ -109,6 +109,7 @@ class QueueProcess extends Base {
$this->activityService->manageInit();
foreach ($requests as $request) {
$request->setTimeout(ActivityService::TIMEOUT_SERVICE);
$output->write('.');
try {
$this->activityService->manageRequest($request);

Wyświetl plik

@ -98,6 +98,7 @@ class QueueController extends Controller {
$requests = $this->queueService->getRequestFromToken($token, RequestQueue::STATUS_STANDBY);
$this->activityService->manageInit();
foreach ($requests as $request) {
$request->setTimeout(ActivityService::TIMEOUT_ASYNC);
try {
$this->activityService->manageRequest($request);
} catch (RequestException $e) {

Wyświetl plik

@ -89,6 +89,7 @@ class Queue extends TimedJob {
$this->activityService->manageInit();
foreach ($requests as $request) {
$request->setTimeout(ActivityService::TIMEOUT_SERVICE);
try {
$this->activityService->manageRequest($request);
} catch (RequestException $e) {

Wyświetl plik

@ -79,6 +79,9 @@ class RequestQueue implements JsonSerializable {
/** @var int */
private $last = 0;
/** @var int */
private $timeout = 5;
/**
* RequestQueue constructor.
@ -285,6 +288,24 @@ class RequestQueue implements JsonSerializable {
}
/**
* @param int $timeout
*
* @return RequestQueue
*/
public function setTimeout(int $timeout): RequestQueue {
$this->timeout = $timeout;
return $this;
}
/**
* @return int
*/
public function getTimeout(): int {
return $this->timeout;
}
/**
* @param array $data
*/

Wyświetl plik

@ -68,6 +68,10 @@ class ActivityService {
const REQUEST_INBOX = 1;
const TIMEOUT_LIVE = 2;
const TIMEOUT_ASYNC = 5;
const TIMEOUT_SERVICE = 10;
const CONTEXT_ACTIVITYSTREAMS = 'https://www.w3.org/ns/activitystreams';
const CONTEXT_SECURITY = 'https://w3id.org/security/v1';
@ -242,6 +246,7 @@ class ActivityService {
try {
$directRequest = $this->queueService->getPriorityRequest($token);
$directRequest->setTimeout(self::TIMEOUT_LIVE);
$this->manageRequest($directRequest);
} catch (RequestException $e) {
} catch (NoHighPriorityRequestException $e) {
@ -280,9 +285,7 @@ class ActivityService {
}
try {
$result = $this->generateRequest(
$queue->getInstance(), $queue->getActivity(), $queue->getAuthor()
);
$result = $this->generateRequestFromQueue($queue);
} catch (ActorDoesNotExistException $e) {
$this->queueService->deleteRequest($queue);
@ -362,9 +365,7 @@ class ActivityService {
/**
* @param InstancePath $path
* @param string $activity
* @param string $author
* @param RequestQueue $queue
*
* @return Request[]
* @throws ActorDoesNotExistException
@ -372,10 +373,15 @@ class ActivityService {
* @throws RequestException
* @throws SocialAppConfigException
*/
public function generateRequest(InstancePath $path, string $activity, string $author): array {
public function generateRequestFromQueue(RequestQueue $queue): array {
//InstancePath $path, string $activity, string $author
// $queue->getInstance(), $queue->getActivity(), $queue->getAuthor()
// );
$path = $queue->getInstance();
// $document = json_encode($activity);
$date = gmdate(self::DATE_FORMAT);
$localActor = $this->getActorFromAuthor($author);
$localActor = $this->getActorFromAuthor($queue->getAuthor());
$localActorLink =
$this->configService->getUrlSocial() . '@' . $localActor->getPreferredUsername();
@ -397,11 +403,12 @@ class ActivityService {
}
$request = new Request($path->getPath(), $requestType);
$request->setTimeout($queue->getTimeout());
$request->addHeader('Host: ' . $path->getAddress());
$request->addHeader('Date: ' . $date);
$request->addHeader('Signature: ' . $header);
$request->setDataJson($activity);
$request->setDataJson($queue->getActivity());
$request->setAddress($path->getAddress());
return $this->curlService->request($request);

Wyświetl plik

@ -152,8 +152,8 @@ class CurlService {
$headers[] = 'Accept: application/ld+json; profile="https://www.w3.org/ns/activitystreams"';
curl_setopt($curl, CURLOPT_USERAGENT, $request->getUserAgent());
curl_setopt($curl, CURLOPT_CONNECTTIMEOUT, 10);
curl_setopt($curl, CURLOPT_TIMEOUT, 20);
curl_setopt($curl, CURLOPT_CONNECTTIMEOUT, $request->getTimeout());
curl_setopt($curl, CURLOPT_TIMEOUT, $request->getTimeout());
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
curl_setopt($curl, CURLOPT_HTTPHEADER, $headers);

Wyświetl plik

@ -148,6 +148,11 @@ class QueueService {
}
/**
* @param int $total
*
* @return RequestQueue[]
*/
public function getRequestStandby(int &$total = 0): array {
$requests = $this->requestQueueRequest->getStandby();
$total = sizeof($requests);
@ -168,7 +173,7 @@ class QueueService {
* @param string $token
* @param int $status
*
* @return array
* @return RequestQueue[]
*/
public function getRequestFromToken(string $token, int $status = -1): array {
if ($token === '') {