functions.php
上传用户:liguizhu
上传日期:2015-11-01
资源大小:2422k
文件大小:4k
源码类别:

P2P编程

开发平台:

Visual C++

  1. <?php
  2. define("PROCESS_FILE",    "/var/run/spnew.pid");
  3. define("PROGRAM_DIR",    "/data/sp/program");
  4. define("PROGRAM_CONFIG",    "/config");
  5. define("CHANNEL_DIR",    "/data/sp/playlist");
  6. define("SP_ID",    "/var/run/spnew.pid");
  7. //得到channel文件名列表
  8. function getChannelList(){
  9. $channelList = array();
  10. if ($handle = opendir(CHANNEL_DIR)) {
  11.    while (false !== ($file = readdir($handle))) {
  12.        if ($file != "." && $file != ".." && strstr($file, ".swap")!=false ) {
  13.            $channelList[]=$file;
  14.        }
  15.    }
  16.    closedir($handle);
  17. }
  18. return $channelList;
  19. }
  20. //得到channel列表 md5对应文件行数组 的hashtable形式
  21. function getChannelTable($sort = true){
  22. $channelList = array();
  23. if ($handle = opendir(CHANNEL_DIR)) {
  24.    while (false !== ($file = readdir($handle))) {
  25.        if ($file != "." && $file != "..") {
  26.    $filename = CHANNEL_DIR . "/" . $file;
  27.    $array_tmp = file($filename);
  28.    $filemtime = filemtime($filename);
  29.    //$channelList[$file]=$array_tmp;
  30.        $channelList[$filemtime] = array($file,$array_tmp);
  31.    }
  32.    }
  33.    closedir($handle);
  34. }
  35. if($sort) krsort($channelList, SORT_NUMERIC);
  36. foreach($channelList as $array_tmp) {
  37. $_channelList[$array_tmp[0]] = $array_tmp[1];
  38. }
  39. unset($channelList);
  40. return $_channelList;
  41. }
  42. //得到program目录名列表
  43. function getPromd5list($sort = true){
  44. $pronamelist = array();
  45. if ($handle = opendir(PROGRAM_DIR)) {
  46.    while (false !== ($file = readdir($handle))) {
  47.        if ($file != "." && $file != "..") {
  48.    $filemtime = filemtime(PROGRAM_DIR.'/'.$file.'/config');
  49.            $pronamelist[$filemtime]=$file;
  50.        }
  51.    }
  52.    closedir($handle);
  53. }
  54. if($sort) krsort($pronamelist, SORT_NUMERIC);
  55. return $pronamelist;
  56. }
  57. //得到program列表 md5对应name 的hashtable形式
  58. function getProgramTable($sort = true){
  59. $programlist = array();
  60. $pronamelist = getPromd5list($sort);
  61. foreach ($pronamelist as $promd5) {
  62. $profilename = PROGRAM_DIR . "/" . $promd5 . PROGRAM_CONFIG;
  63. $config = array();
  64.     $array_tmp = file($profilename);
  65.     foreach($array_tmp as $v){
  66.         if ((substr(trim($v),0,1)!=';') && (substr_count($v,'=')>=1)){
  67.         //Line mustn't start with a ';' and must contain at least one '=' symbol.
  68.             $pos = strpos($v, '=');
  69.             $config[trim(substr($v,0,$pos))] = trim(substr($v, $pos+1));
  70.         }
  71.     }
  72.     unset($array_tmp);
  73. $programlist[$promd5]=$config["ChannelName"];
  74. }
  75. if($sort) {
  76. array_flip($programlist);
  77. ksort($programlist);
  78. array_flip($programlist);
  79. }
  80. return $programlist;
  81. }
  82. //得到program information列表 md5对应array 的hashtable形式
  83. function getProgramInfoTable(){
  84. $programlist = array();
  85. $pronamelist = getPromd5list();
  86. foreach ($pronamelist as $promd5) {
  87. $profilename = PROGRAM_DIR . "/" . $promd5 . PROGRAM_CONFIG;
  88. $config = array();
  89.     $array_tmp = file($profilename);
  90.     foreach($array_tmp as $v){
  91.         if ((substr(trim($v),0,1)!=';') && (substr_count($v,'=')>=1)){
  92.         //Line mustn't start with a ';' and must contain at least one '=' symbol.
  93.             $pos = strpos($v, '=');
  94.             $config[trim(substr($v,0,$pos))] = trim(substr($v, $pos+1));
  95.         }
  96.     }
  97.     unset($array_tmp);
  98. $programlist[$promd5]=$config;
  99. }
  100. return $programlist;
  101. }
  102. function infoSp(){
  103. $spid = file(SP_ID);
  104. $command = "/usr/bin/sudo -u root kill -HUP ".$spid[0];
  105. exec($command);
  106. }
  107. function shelldel($dir){
  108. $command = "rm -rf ".$dir;
  109. echo $command;
  110. echo exec($command);
  111. }
  112. //@header('Expires: Mon, 26 Jul 1997 05:00:00 GMT');
  113. //@header('Last-Modified: '.gmdate('D, d M Y H:i:s').' GMT');
  114. //@header('Cache-Control: no-store, no-cache, must-revalidate');
  115. //@header('Cache-Control: post-check=0, pre-check=0', false);
  116. //@header('Pragma: no-cache');
  117. function cache_programlist() {
  118. $file = time();
  119. $gramTable = getProgramTable(true);
  120. file_put_contents('/tmp/'.$file.'.prolist', serialize($gramTable));
  121. return $file;
  122. }
  123. ?>