public function runStep($step) { VarnishpurgePlugin::log('Varnish purge task run step: ' . $step, LogLevel::Info, craft()->varnishpurge->getSetting('varnishLogAll')); $servers = craft()->varnishpurge->getSetting('varnishUrl'); if (!is_array($servers)) { $servers = array($servers); } foreach ($servers as $server) { $batch = \Guzzle\Batch\BatchBuilder::factory()->transferRequests(20)->bufferExceptions()->build(); $client = new \Guzzle\Http\Client(); $client->setDefaultOption('headers/Accept', '*/*'); foreach ($this->_urls[$step] as $url) { $urlComponents = parse_url($url); $targetUrl = preg_replace('{/$}', '', $server) . $urlComponents['path']; VarnishpurgePlugin::log('Adding url to purge: ' . $targetUrl . ' with Host: ' . $urlComponents['host'], LogLevel::Info, craft()->varnishpurge->getSetting('varnishLogAll')); $request = $client->createRequest('PURGE', $targetUrl); $request->addHeader('Host', $urlComponents['host']); $batch->add($request); } $requests = $batch->flush(); foreach ($batch->getExceptions() as $e) { VarnishpurgePlugin::log('An exception occurred: ' . $e->getMessage(), LogLevel::Error); } $batch->clearExceptions(); } return true; }
public function runStep($step) { VarnishpurgePlugin::log('Varnish purge task run step: ' . $step, LogLevel::Info, craft()->varnishpurge->getSetting('varnishLogAll')); $batch = \Guzzle\Batch\BatchBuilder::factory()->transferRequests(20)->bufferExceptions()->build(); $client = new \Guzzle\Http\Client(); $client->setDefaultOption('headers/Accept', '*/*'); foreach ($this->_urls[$step] as $url) { VarnishpurgePlugin::log('Adding url to purge: ' . $url, LogLevel::Info, craft()->varnishpurge->getSetting('varnishLogAll')); $request = $client->createRequest('PURGE', $url); $batch->add($request); } $requests = $batch->flush(); foreach ($batch->getExceptions() as $e) { VarnishpurgePlugin::log('An exception occurred: ' . $e->getMessage(), LogLevel::Error); } $batch->clearExceptions(); return true; }
/** * Create task for purging urls * * @param $taskName * @param $uris * @param $locale */ private function _makeTask($taskName, $urls, $locale) { $urls = array_unique($urls); VarnishpurgePlugin::log('Creating task (' . $taskName . ', ' . implode(',', $urls) . ', ' . $locale . ')', LogLevel::Info, craft()->varnishpurge->getSetting('varnishLogAll')); // If there are any pending tasks, just append the paths to it $task = craft()->tasks->getNextPendingTask($taskName); if ($task && is_array($task->settings)) { $settings = $task->settings; if (!is_array($settings['urls'])) { $settings['urls'] = array($settings['urls']); } if (is_array($urls)) { $settings['urls'] = array_merge($settings['urls'], $urls); } else { $settings['urls'][] = $urls; } // Make sure there aren't any duplicate paths $settings['urls'] = array_unique($settings['urls']); // Set the new settings and save the task $task->settings = $settings; craft()->tasks->saveTask($task, false); } else { craft()->tasks->createTask($taskName, null, array('urls' => $urls, 'locale' => $locale)); } }