diff options
author | Frederic Guillot <fred@kanboard.net> | 2016-06-05 14:19:07 -0400 |
---|---|---|
committer | Frederic Guillot <fred@kanboard.net> | 2016-06-05 14:19:07 -0400 |
commit | a08339059b06bcfb673b13a380b6f199abfb5983 (patch) | |
tree | 81638ec619684f04d9b5676bea1f73e1a2197cd1 /app/Core/Http/Client.php | |
parent | f48e5456312ddb366f9b623cd97b0e740fe99d9e (diff) |
Improve background workers
Diffstat (limited to 'app/Core/Http/Client.php')
-rw-r--r-- | app/Core/Http/Client.php | 43 |
1 files changed, 41 insertions, 2 deletions
diff --git a/app/Core/Http/Client.php b/app/Core/Http/Client.php index 12b0a1cb..16e423dc 100644 --- a/app/Core/Http/Client.php +++ b/app/Core/Http/Client.php @@ -3,6 +3,7 @@ namespace Kanboard\Core\Http; use Kanboard\Core\Base; +use Kanboard\Job\HttpAsyncJob; /** * HTTP client @@ -80,6 +81,24 @@ class Client extends Base } /** + * Send a POST HTTP request encoded in JSON (Fire and forget) + * + * @access public + * @param string $url + * @param array $data + * @param string[] $headers + */ + public function postJsonAsync($url, array $data, array $headers = array()) + { + $this->queueManager->push(HttpAsyncJob::getInstance($this->container)->withParams( + 'POST', + $url, + json_encode($data), + array_merge(array('Content-type: application/json'), $headers) + )); + } + + /** * Send a POST HTTP request encoded in www-form-urlencoded * * @access public @@ -99,21 +118,40 @@ class Client extends Base } /** + * Send a POST HTTP request encoded in www-form-urlencoded (fire and forget) + * + * @access public + * @param string $url + * @param array $data + * @param string[] $headers + */ + public function postFormAsync($url, array $data, array $headers = array()) + { + $this->queueManager->push(HttpAsyncJob::getInstance($this->container)->withParams( + 'POST', + $url, + http_build_query($data), + array_merge(array('Content-type: application/x-www-form-urlencoded'), $headers) + )); + } + + /** * Make the HTTP request * - * @access private + * @access public * @param string $method * @param string $url * @param string $content * @param string[] $headers * @return string */ - private function doRequest($method, $url, $content, array $headers) + public function doRequest($method, $url, $content, array $headers) { if (empty($url)) { return ''; } + $startTime = microtime(true); $stream = @fopen(trim($url), 'r', false, stream_context_create($this->getContext($method, $content, $headers))); $response = ''; @@ -128,6 +166,7 @@ class Client extends Base $this->logger->debug('HttpClient: payload='.$content); $this->logger->debug('HttpClient: metadata='.var_export(@stream_get_meta_data($stream), true)); $this->logger->debug('HttpClient: response='.$response); + $this->logger->debug('HttpClient: executionTime='.(microtime(true) - $startTime)); } return $response; |