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"; } }