예제 #1
0
 public function run()
 {
     $count = 0;
     echo "Loading initial data...\n";
     $this->db = wfGetDB(DB_SLAVE, null, 'wikicities');
     $this->loadIndex();
     $this->loadImagePaths();
     echo "Processing...\n";
     foreach ($this->meta as $city) {
         echo " {$city['dbname']} ";
         flush();
         if ($this->dataExists($city['dbname'])) {
             echo "skipped (data already exists)\n";
             continue;
         }
         $lock = Lock::acquire_return('iter-' . $city['id']);
         if (!$lock) {
             echo "skipped (lock taken)\n";
             continue;
         }
         $worker = new Worker($city['dbname'], $city);
         if ($worker->run()) {
             $city = array_merge($city, $worker->get());
             $this->save($city['dbname'], $city);
         }
         $lock->release();
         echo "done\n";
     }
 }