#! /usr/bin/env php
error_mask) {
echo sprintf("Job failed: %s\n",
wu_error_mask_str($wu->error_mask)
);
return;
}
switch ($wu->assimilate_state) {
case ASSIMILATE_INIT:
echo "Job is in progress.\n";
break;
case ASSIMILATE_READY:
echo "Job is waiting for assimilation.\n";
break;
case ASSIMILATE_DONE:
$result = BoincResult::lookup_id($wu->canonical_resultid);
$host = BoincHost::lookup_id($result->hostid);
$user = BoincUser::lookup_id($result->userid);
echo "Job completed\n"
." Host $host->id ($host->os_name, $host->p_vendor)\n"
." User $user->id ($user->name)\n"
;
$xmlin = simplexml_load_string(
sprintf("%s", $result->xml_doc_in)
);
$xmlout = simplexml_load_string(
sprintf("%s", $result->xml_doc_out)
);
$ofs = $xmlout->file_info;
$ifs = $xmlin->result->file_ref;
$nofs = $ofs->count();
for ($i=0; $i<$nofs; $i++) {
$path = sprintf("$dir/%s__file_%s", $wu->name, $ifs[$i]->open_name);
if (!is_file($path)) {
die("output file $i is missing: $path\n");
}
echo "Output file $i ($path):\n";
$x = file_get_contents($path);
if (strlen($x) > 256) {
$x = substr($x, 0, 256);
$x .= '...';
}
echo "$x\n";
}
break;
}
}
if ($argc != 2) {
die("usage: demo_query jobname|batchid\n");
}
$x = $argv[1];
if (is_numeric($x)) {
$id = (int)$x;
$batch = BoincBatch::lookup_id($id);
if (!$batch) {
die("no such batch\n");
}
$wus = BoincWorkunit::enum("batch=$id");
foreach ($wus as $wu) {
echo "-------------------\nWorkunit $wu->id:\n";
show_wu($wu, "results/$id");
}
} else {
$wu = BoincWorkunit::lookup("name='$x'");
if (!$wu) {
die("no such job: $wu_name\n");
}
show_wu($wu, "results/$wu->batch");
}
?>