Source code of file seti_data.inc.php
from the PHP SETI@home web monitor.

<?php
// PHP SETI@home Web Monitor (phpsetimon).
// Copyright 2003, 2004 by Mario A. Valdez-Ramirez
// http://www.mariovaldez.net/

// This program is free software; you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
// the Free Software Foundation; either version 2 of the License, or
// (at your option) any later version.

// This program is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
// GNU General Public License for more details.

// You should have received a copy of the GNU General Public License
// along with this program; if not, write to the Free Software
// Foundation, Inc., 59 Temple Place - Suite 330,
// Boston, MA 02111-1307, USA.

// You can contact Mario A. Valdez-Ramirez by email
// at mario@mariovaldez.org or paper mail at
// Olmos 809, San Nicolas, NL. 66495, Mexico.

//%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%



// Check INSTANCE parameter...
if ($_GET["instance"]) {
  
$instance abs ($_GET["instance"]);
  if (
$instance 1)
    
$instance 1;
  if (
$instance $ps_seti_instances)
    
$instance $ps_seti_instances;
}
else {
  
$instance 1;
}
$ps_setistatus_filename $ps_homedir[$instance] . "state.sah";
$ps_setiuser_filename $ps_homedir[$instance] . "user_info.sah";
$ps_setiwu_filename $ps_homedir[$instance] . "work_unit.sah";
$ps_setiresult_filename $ps_homedir[$instance] . "result.sah";
$ps_setipid_filename $ps_homedir[$instance] . "pid.sah";

$ps_curclientname str_replace (" ""_"$ps_homename[$instance]);
$ps_curclientname ereg_replace("[^[:alnum:]_]"""$ps_curclientname);
$ps_curclientname strtolower ($ps_curclientname);
if (!
$ps_curclientname$ps_curclientname $ps_text["client"] . $instance;

if (
$ps_homeislocal[$instance]) {
  
$ps_clientislocal true;
}
else {
  
$ps_clientislocal false;
}


// Check NOHTML, BIGMAP and REGENERATE parameters...
$nohtml false;
if (
$_GET["nohtml"]) {
  
$nohtml true;
}
$ps_cfg_showbigmap false;
if (
$ps_cfg_createbigmap || $ps_cfg_createhistory) {
  if (
$_GET["bigmap"]) {
    
$ps_cfg_showbigmap true;
  }
}
$ps_cfg_downloadskyview false;
if (
$ps_cfg_getskyview) {
  if (
$_GET["skyview"]) {
    
$ps_cfg_downloadskyview true;
  }
}
$regenerate false;
if (!
$ps_disable_regenerate) {
  if (
$_GET["regenerate"]) {
    
$regenerate true;
  }
}


// Check if directory of current seti client exists...
$ps_setistatus_rawdata "";
$ps_setiuser_rawdata "";
$ps_setiwu_rawdata "";
$ps_expectedpid 0;
$ps_results_waiting false;
if (
file_exists ($ps_homedir[$instance])) {
  
// Load status data...
  
if (is_readable ($ps_setistatus_filename)) {
    
$ps_setistatus_file fopen ($ps_setistatus_filename"rb");
    
$ps_setistatus_rawdata fread ($ps_setistatus_file10240);
    
fclose ($ps_setistatus_file);
    
$ps_setistatus_dataarray explode ("\n"$ps_setistatus_rawdata);
  }
  
// Load user data...
  
if (is_readable ($ps_setiuser_filename)) {
    
$ps_setiuser_file fopen ($ps_setiuser_filename"rb");
    
$ps_setiuser_rawdata fread ($ps_setiuser_file10240);
    
fclose ($ps_setiuser_file);
    
$ps_setiuser_dataarray explode ("\n"$ps_setiuser_rawdata);
  }
  
// Load workunit data...
  
if (is_readable ($ps_setiwu_filename)) {
    
$ps_setiwu_file fopen ($ps_setiwu_filename"rb");
    
$ps_setiwu_rawdata fread ($ps_setiwu_file10240);
    
fclose ($ps_setiwu_file);
    
$ps_setiwu_dataarray explode ("\n"$ps_setiwu_rawdata);
  }
  
// Load pid data...
  
if (is_readable ($ps_setipid_filename)) {
    
$ps_setipid_file fopen ($ps_setipid_filename"rb");
    
$ps_setipid_rawdata fgets ($ps_setipid_file20);
    
fclose ($ps_setipid_file);
    
$ps_expectedpid str_replace ("\n"""trim ($ps_setipid_rawdata));
  }
  
// Check if there pending results...
  
if (is_readable ($ps_setiresult_filename)) {
    
$ps_results_waiting true;
  }
}


// Extract the data from each data stream...
if ($ps_setiwu_rawdata) {
  
$ps_wutimerec fnps_getsetidata ("time_recorded"$ps_setiwu_dataarrayfalse);
  
$ps_wutimerec substr ($ps_wutimerecstrpos ($ps_wutimerec"(") + 1, -1);
  
$ps_wuname fnps_getsetidata ("name"$ps_setiwu_dataarrayfalse);
  
$ps_wurastart fnps_getsetidata ("start_ra"$ps_setiwu_dataarraytrue);
  
$ps_wurastart = (floor ($ps_wurastart) % 24) + ($ps_wurastart floor ($ps_wurastart));
  
$ps_wuraend fnps_getsetidata ("end_ra"$ps_setiwu_dataarraytrue);
  
$ps_wuraend = (floor ($ps_wuraend) % 24) + ($ps_wuraend floor ($ps_wuraend));
  
$ps_wudecstart fnps_getsetidata ("start_dec"$ps_setiwu_dataarraytrue);
  
$ps_wudecend fnps_getsetidata ("end_dec"$ps_setiwu_dataarraytrue);
  
$ps_wuangle fnps_getsetidata ("angle_range"$ps_setiwu_dataarraytrue);
  
$ps_tmp_prefix $ps_filename_separator $ps_filename_prefix $ps_filename_separator $ps_curclientname $ps_filename_separator $ps_wuname $ps_filename_separator;
  
$ps_imagemap_filename $ps_cfg_mapdir $ps_tmp_prefix "skymap.png";
  
$ps_zoommap_filename $ps_cfg_zoomdir $ps_tmp_prefix "zoom.png";
  
$ps_skyview_filename $ps_cfg_skyviewdir $ps_tmp_prefix "skyview.gif";
  
$ps_history_filename $ps_cfg_historydir $ps_tmp_prefix "history.txt";
  
$ps_gaussgraph_filename $ps_cfg_gaussdir $ps_tmp_prefix "gauss.png";
}
else {
  
$ps_wurastart 0;
  
$ps_wuraend 0;
  
$ps_wudecstart 0;
  
$ps_wudecend 0;
  
$ps_imagemap_filename "";
  
$ps_zoommap_filename "";
  
$ps_skyview_filename "";
  
$ps_history_filename "";
}
if (
$ps_setiuser_rawdata) {
  
$ps_username fnps_getsetidata ("name"$ps_setiuser_dataarrayfalse);
  
$ps_userid fnps_getsetidata ("id"$ps_setiuser_dataarrayfalse);
  
$ps_totalresults fnps_getsetidata ("nresults"$ps_setiuser_dataarraytrue);
  
$ps_totalcpu fnps_getsetidata ("total_cpu"$ps_setiuser_dataarraytrue);
  
$ps_cpuperunit = ($ps_totalcpu $ps_totalresults);
  
$ps_jregisterdate fnps_getsetidata ("register_time"$ps_setiuser_dataarrayfalse);
  
$ps_jregisterdate abs (substr ($ps_jregisterdate0strpos ($ps_jregisterdate"(") - 1));
  
$ps_jlastwudate fnps_getsetidata ("last_result_time"$ps_setiuser_dataarrayfalse);
  
$ps_jlastwudate abs (substr ($ps_jlastwudate0strpos ($ps_jlastwudate"(") - 1));
  
$ps_usertime $ps_jlastwudate $ps_jregisterdate;
  
$ps_unitsperday = ($ps_totalresults $ps_usertime);
}
if (
$ps_setistatus_rawdata) {
  
$ps_cputime fnps_getsetidata ("cpu"$ps_setistatus_dataarraytrue);
  
$ps_progress fnps_getsetidata ("prog"$ps_setistatus_dataarraytrue) * 100;
  if ((
$ps_cputime 0) && ($ps_progress 0)) {
    
$ps_eta round ((100 $ps_progress) * ($ps_cputime/$ps_progress), 1);
  }
  else {
    
$ps_eta 0;
  }
  
$ps_gaussian_fit fnps_getsetidata ("bg_chisq"$ps_setistatus_dataarraytrue);
  
$ps_gaussian_power fnps_getsetidata ("bg_power"$ps_setistatus_dataarraytrue);
  
$ps_gaussian_mean fnps_getsetidata ("bg_true_mean"$ps_setistatus_dataarraytrue);
  
$ps_pulse_score fnps_getsetidata ("bp_score"$ps_setistatus_dataarraytrue);
  
$ps_pulse_power fnps_getsetidata ("bp_power"$ps_setistatus_dataarraytrue);
  
$ps_pulse_period fnps_getsetidata ("bp_period"$ps_setistatus_dataarraytrue);
  
$ps_gaussianpeak 0;
  for (
$ps_bgc 0$ps_bgc <= 63$ps_bgc++) {
    
$ps_gaussian[$ps_bgc] = fnps_getsetidata ("bg_pot " $ps_bgc$ps_setistatus_dataarraytrue);
    if (
$ps_gaussianpeak $ps_gaussian[$ps_bgc])
      
$ps_gaussianpeak $ps_gaussian[$ps_bgc];
  }
}


// Create the history file...
$ps_history_exists is_readable ($ps_history_filename);
if ((
$ps_setiwu_rawdata) && ($ps_cfg_createhistory)) {
  
fnps_save_history ($ps_history_filename$ps_wurastart$ps_wudecstart$ps_wuanglefnps_curdate_string (), $ps_wutimerec);
}

// Check if the process is running...
$ps_psdata "";
$ps_client_cpu 0;
$ps_client_mem 0;
$ps_client_pid 0;
$ps_client_nice 0;
$ps_client_is_running = -1;
if ((
$ps_clientislocal) && ($ps_cfg_cangetpid)) {
  
$ps_pspipe popen ($ps_pid_command"r");
  while (!
feof ($ps_pspipe)) {
    
$ps_psdata .= fgets ($ps_pspipe1024);
  }
  
pclose ($ps_pspipe);
  if (
$ps_psdata) {
    
$ps_psdata str_replace ("\r"""$ps_psdata);
    
$ps_psdataarray explode ("\n"$ps_psdata);
    foreach (
$ps_psdataarray as $ps_curpid) {
      
$ps_pidsarray explode (" "trim (eregi_replace ("[[:space:]]+"" "$ps_curpid)));
      if ((
$ps_pidsarray[0] == $ps_expectedpid) || ($ps_cfg_ignorepidfile)) {
        if (
is_numeric ($ps_pidsarray[0])) $ps_client_pid abs ($ps_pidsarray[0]);
        if (
is_numeric ($ps_pidsarray[1])) $ps_client_cpu abs ($ps_pidsarray[1]);
        if (
is_numeric ($ps_pidsarray[2])) $ps_client_mem abs ($ps_pidsarray[2]);
        if (
is_numeric ($ps_pidsarray[3])) $ps_client_nice abs ($ps_pidsarray[3]);
        break;
      } elseif (
$ps_pidsarray[0] == -1) {
        
$ps_pidsarray = array ();
        break;
      }
    }
  }
  if (
$ps_cfg_ignorepidfile && (count ($ps_pidsarray) < 1)) {
      
$ps_client_is_running 0;
  }
  elseif (
$ps_cfg_ignorepidfile && (count ($ps_pidsarray) > 0)) {
      
$ps_client_is_running 1;
  }
  elseif ((
$ps_expectedpid == 0) && (count ($ps_pidsarray) < 1)) {
      
$ps_client_is_running 0;
  }
  elseif ((
$ps_expectedpid 0) && (count ($ps_pidsarray) < 1)) {
      
$ps_client_is_running 0;
  }
  elseif ((
$ps_expectedpid == 0) && (count ($ps_pidsarray) > 0)) {
      
$ps_client_is_running = -1;
  }
  elseif ((
$ps_expectedpid 0) && (count ($ps_pidsarray) > 0) && ($ps_client_pid == 0)) {
      
$ps_client_is_running 0;
  }
  elseif ((
$ps_expectedpid 0) && ($ps_client_pid 0)) {
      
$ps_client_is_running 1;
  }
}


// Create history list if needed...
$ps_history_listfull "";
if (
$ps_cfg_showbigmap) {
  
$ps_history_listfull fnps_extract_history ($ps_curclientname$ps_filename_separator $ps_filename_prefix $ps_filename_separatortrue);
}



//                      Truth table for Local clients
// =========================================================================
//      pid.sah content        ps-output       matching       conclusion
// -------------------------------------------------------------------------
//           ignore              none            NA             no client
//           ignore               PID            NA          client running
//            none               none            NA             no client
//             PID               none            NA             no client
//            none                PID            NA           undetermined
//             PID                PID            no             no client
//             PID                PID            yes         client running
// -------------------------------------------------------------------------
//           All other cases (Remote or Local without PS) are undetermined.






?>
 
 
NA fum/lmd: 2004.09.16
Copyright ©1994-2017 by Mario A. Valdez-Ramírez.
no siga este enlace / do not follow this link