コード例 #1
0
 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;
 }
コード例 #2
0
 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;
 }
コード例 #3
0
 /**
  * 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));
     }
 }