Merge pull request #987 from annando/master
Auto-killing processes, somce changed code in the plaintext function and speed issues in network
This commit is contained in:
commit
97e74f1570
|
@ -37,9 +37,15 @@ function cronhooks_run(&$argv, &$argc){
|
||||||
|
|
||||||
$lockpath = get_config('system','lockpath');
|
$lockpath = get_config('system','lockpath');
|
||||||
if ($lockpath != '') {
|
if ($lockpath != '') {
|
||||||
$pidfile = new pidfile($lockpath, 'cron.lck');
|
$pidfile = new pidfile($lockpath, 'cronhooks');
|
||||||
if($pidfile->is_already_running()) {
|
if($pidfile->is_already_running()) {
|
||||||
logger("cronhooks: Already running");
|
logger("cronhooks: Already running");
|
||||||
|
if ($pidfile->running_time() > 9*60) {
|
||||||
|
$pidfile->kill();
|
||||||
|
logger("cronhooks: killed stale process");
|
||||||
|
// Calling a new instance
|
||||||
|
proc_run('php','include/cronhooks.php');
|
||||||
|
}
|
||||||
exit;
|
exit;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -50,11 +56,12 @@ function cronhooks_run(&$argv, &$argc){
|
||||||
|
|
||||||
logger('cronhooks: start');
|
logger('cronhooks: start');
|
||||||
|
|
||||||
|
|
||||||
$d = datetime_convert();
|
$d = datetime_convert();
|
||||||
|
|
||||||
call_hooks('cron', $d);
|
call_hooks('cron', $d);
|
||||||
|
|
||||||
|
logger('cronhooks: end');
|
||||||
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -122,7 +122,6 @@ function fetch_url($url,$binary = false, &$redirects = 0, $timeout = 0, $accept_
|
||||||
|
|
||||||
if(! function_exists('post_url')) {
|
if(! function_exists('post_url')) {
|
||||||
function post_url($url,$params, $headers = null, &$redirects = 0, $timeout = 0) {
|
function post_url($url,$params, $headers = null, &$redirects = 0, $timeout = 0) {
|
||||||
|
|
||||||
$stamp1 = microtime(true);
|
$stamp1 = microtime(true);
|
||||||
|
|
||||||
$a = get_app();
|
$a = get_app();
|
||||||
|
@ -130,6 +129,8 @@ function post_url($url,$params, $headers = null, &$redirects = 0, $timeout = 0)
|
||||||
if(($redirects > 8) || (! $ch))
|
if(($redirects > 8) || (! $ch))
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
|
logger("post_url: start ".$url, LOGGER_DATA);
|
||||||
|
|
||||||
curl_setopt($ch, CURLOPT_HEADER, true);
|
curl_setopt($ch, CURLOPT_HEADER, true);
|
||||||
curl_setopt($ch, CURLOPT_RETURNTRANSFER,true);
|
curl_setopt($ch, CURLOPT_RETURNTRANSFER,true);
|
||||||
curl_setopt($ch, CURLOPT_POST,1);
|
curl_setopt($ch, CURLOPT_POST,1);
|
||||||
|
@ -178,6 +179,8 @@ function post_url($url,$params, $headers = null, &$redirects = 0, $timeout = 0)
|
||||||
$curl_info = curl_getinfo($ch);
|
$curl_info = curl_getinfo($ch);
|
||||||
$http_code = $curl_info['http_code'];
|
$http_code = $curl_info['http_code'];
|
||||||
|
|
||||||
|
logger("post_url: result ".$http_code." - ".$url, LOGGER_DATA);
|
||||||
|
|
||||||
$header = '';
|
$header = '';
|
||||||
|
|
||||||
// Pull out multiple headers, e.g. proxy and continuation headers
|
// Pull out multiple headers, e.g. proxy and continuation headers
|
||||||
|
@ -190,16 +193,18 @@ function post_url($url,$params, $headers = null, &$redirects = 0, $timeout = 0)
|
||||||
}
|
}
|
||||||
|
|
||||||
if($http_code == 301 || $http_code == 302 || $http_code == 303 || $http_code == 307) {
|
if($http_code == 301 || $http_code == 302 || $http_code == 303 || $http_code == 307) {
|
||||||
$matches = array();
|
$matches = array();
|
||||||
preg_match('/(Location:|URI:)(.*?)\n/', $header, $matches);
|
preg_match('/(Location:|URI:)(.*?)\n/', $header, $matches);
|
||||||
$newurl = trim(array_pop($matches));
|
$newurl = trim(array_pop($matches));
|
||||||
if(strpos($newurl,'/') === 0)
|
if(strpos($newurl,'/') === 0)
|
||||||
$newurl = $old_location_info["scheme"] . "://" . $old_location_info["host"] . $newurl;
|
$newurl = $old_location_info["scheme"] . "://" . $old_location_info["host"] . $newurl;
|
||||||
if (filter_var($newurl, FILTER_VALIDATE_URL)) {
|
if (filter_var($newurl, FILTER_VALIDATE_URL)) {
|
||||||
$redirects++;
|
$redirects++;
|
||||||
return fetch_url($newurl,false,$redirects,$timeout);
|
logger("post_url: redirect ".$url." to ".$newurl);
|
||||||
}
|
return post_url($newurl,$params, $headers, $redirects, $timeout);
|
||||||
}
|
//return fetch_url($newurl,false,$redirects,$timeout);
|
||||||
|
}
|
||||||
|
}
|
||||||
$a->set_curl_code($http_code);
|
$a->set_curl_code($http_code);
|
||||||
$body = substr($s,strlen($header));
|
$body = substr($s,strlen($header));
|
||||||
|
|
||||||
|
@ -209,6 +214,8 @@ function post_url($url,$params, $headers = null, &$redirects = 0, $timeout = 0)
|
||||||
|
|
||||||
$a->save_timestamp($stamp1, "network");
|
$a->save_timestamp($stamp1, "network");
|
||||||
|
|
||||||
|
logger("post_url: end ".$url, LOGGER_DATA);
|
||||||
|
|
||||||
return($body);
|
return($body);
|
||||||
}}
|
}}
|
||||||
|
|
||||||
|
|
|
@ -60,7 +60,7 @@ function onepoll_run(&$argv, &$argc){
|
||||||
// Test
|
// Test
|
||||||
$lockpath = get_config('system','lockpath');
|
$lockpath = get_config('system','lockpath');
|
||||||
if ($lockpath != '') {
|
if ($lockpath != '') {
|
||||||
$pidfile = new pidfile($lockpath, 'onepoll'.$contact_id.'.lck');
|
$pidfile = new pidfile($lockpath, 'onepoll'.$contact_id);
|
||||||
if($pidfile->is_already_running()) {
|
if($pidfile->is_already_running()) {
|
||||||
logger("onepoll: Already running for contact ".$contact_id);
|
logger("onepoll: Already running for contact ".$contact_id);
|
||||||
exit;
|
exit;
|
||||||
|
|
|
@ -28,5 +28,14 @@ class pidfile {
|
||||||
public function is_already_running() {
|
public function is_already_running() {
|
||||||
return $this->_running;
|
return $this->_running;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public function running_time() {
|
||||||
|
return(time() - filectime($this->_file));
|
||||||
|
}
|
||||||
|
|
||||||
|
public function kill() {
|
||||||
|
if (file_exists($this->_file))
|
||||||
|
return(posix_kill(file_get_contents($this->_file), SIGTERM));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
?>
|
?>
|
||||||
|
|
|
@ -9,6 +9,10 @@ function get_attached_data($body) {
|
||||||
- description:
|
- description:
|
||||||
- (thumbnail)
|
- (thumbnail)
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
// Simplify image codes
|
||||||
|
$body = preg_replace("/\[img\=([0-9]*)x([0-9]*)\](.*?)\[\/img\]/ism", '[img]$3[/img]', $body);
|
||||||
|
|
||||||
$post = array();
|
$post = array();
|
||||||
|
|
||||||
if (preg_match_all("(\[class=(.*?)\](.*?)\[\/class\])ism",$body, $attached, PREG_SET_ORDER)) {
|
if (preg_match_all("(\[class=(.*?)\](.*?)\[\/class\])ism",$body, $attached, PREG_SET_ORDER)) {
|
||||||
|
@ -38,40 +42,11 @@ function get_attached_data($body) {
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return($post);
|
|
||||||
}
|
|
||||||
|
|
||||||
function shortenmsg($msg, $limit) {
|
|
||||||
$lines = explode("\n", $msg);
|
|
||||||
$msg = "";
|
|
||||||
$recycle = html_entity_decode("♲ ", ENT_QUOTES, 'UTF-8');
|
|
||||||
foreach ($lines AS $row=>$line) {
|
|
||||||
if (strlen(trim($msg."\n".$line)) <= $limit)
|
|
||||||
$msg = trim($msg."\n".$line);
|
|
||||||
// Is the new message empty by now or is it a reshared message?
|
|
||||||
elseif (($msg == "") OR (($row == 1) AND (substr($msg, 0, 4) == $recycle)))
|
|
||||||
$msg = substr(substr(trim($msg."\n".$line), 0, $limit), 0, -3)."...";
|
|
||||||
else
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
return($msg);
|
|
||||||
}
|
|
||||||
|
|
||||||
function plaintext($a, $b, $limit = 0, $includedlinks = false) {
|
|
||||||
require_once("include/bbcode.php");
|
|
||||||
require_once("include/html2plain.php");
|
|
||||||
require_once("mod/parse_url.php");
|
|
||||||
require_once("include/network.php");
|
|
||||||
|
|
||||||
// Simplify image codes
|
|
||||||
$body = preg_replace("/\[img\=([0-9]*)x([0-9]*)\](.*?)\[\/img\]/ism", '[img]$3[/img]', $b["body"]);
|
|
||||||
|
|
||||||
// At first look at data that is attached via "type-..." stuff
|
|
||||||
// This will hopefully replaced with a dedicated bbcode later
|
|
||||||
$post = get_attached_data($body);
|
|
||||||
|
|
||||||
// if nothing is found, it maybe having an image.
|
// if nothing is found, it maybe having an image.
|
||||||
if (!isset($post["type"])) {
|
if (!isset($post["type"])) {
|
||||||
|
require_once("mod/parse_url.php");
|
||||||
|
|
||||||
$URLSearchString = "^\[\]";
|
$URLSearchString = "^\[\]";
|
||||||
if (preg_match_all("(\[url=([$URLSearchString]*)\]\s*\[img\]([$URLSearchString]*)\[\/img\]\s*\[\/url\])ism", $body, $pictures, PREG_SET_ORDER)) {
|
if (preg_match_all("(\[url=([$URLSearchString]*)\]\s*\[img\]([$URLSearchString]*)\[\/img\]\s*\[\/url\])ism", $body, $pictures, PREG_SET_ORDER)) {
|
||||||
if (count($pictures) == 1) {
|
if (count($pictures) == 1) {
|
||||||
|
@ -125,6 +100,37 @@ function plaintext($a, $b, $limit = 0, $includedlinks = false) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
return($post);
|
||||||
|
}
|
||||||
|
|
||||||
|
function shortenmsg($msg, $limit, $twitter = false) {
|
||||||
|
// To-Do:
|
||||||
|
// For Twitter URLs aren't shortened, but they have to be calculated as if.
|
||||||
|
|
||||||
|
$lines = explode("\n", $msg);
|
||||||
|
$msg = "";
|
||||||
|
$recycle = html_entity_decode("♲ ", ENT_QUOTES, 'UTF-8');
|
||||||
|
foreach ($lines AS $row=>$line) {
|
||||||
|
if (strlen(trim($msg."\n".$line)) <= $limit)
|
||||||
|
$msg = trim($msg."\n".$line);
|
||||||
|
// Is the new message empty by now or is it a reshared message?
|
||||||
|
elseif (($msg == "") OR (($row == 1) AND (substr($msg, 0, 4) == $recycle)))
|
||||||
|
$msg = substr(substr(trim($msg."\n".$line), 0, $limit), 0, -3)."...";
|
||||||
|
else
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
return($msg);
|
||||||
|
}
|
||||||
|
|
||||||
|
function plaintext($a, $b, $limit = 0, $includedlinks = false) {
|
||||||
|
require_once("include/bbcode.php");
|
||||||
|
require_once("include/html2plain.php");
|
||||||
|
require_once("include/network.php");
|
||||||
|
|
||||||
|
// At first look at data that is attached via "type-..." stuff
|
||||||
|
// This will hopefully replaced with a dedicated bbcode later
|
||||||
|
$post = get_attached_data($b["body"]);
|
||||||
|
|
||||||
if (($b["title"] != "") AND ($post["text"] != ""))
|
if (($b["title"] != "") AND ($post["text"] != ""))
|
||||||
$post["text"] = trim($b["title"]."\n\n".$post["text"]);
|
$post["text"] = trim($b["title"]."\n\n".$post["text"]);
|
||||||
elseif ($b["title"] != "")
|
elseif ($b["title"] != "")
|
||||||
|
|
|
@ -43,9 +43,15 @@ function poller_run(&$argv, &$argc){
|
||||||
|
|
||||||
$lockpath = get_config('system','lockpath');
|
$lockpath = get_config('system','lockpath');
|
||||||
if ($lockpath != '') {
|
if ($lockpath != '') {
|
||||||
$pidfile = new pidfile($lockpath, 'poller.lck');
|
$pidfile = new pidfile($lockpath, 'poller');
|
||||||
if($pidfile->is_already_running()) {
|
if($pidfile->is_already_running()) {
|
||||||
logger("poller: Already running");
|
logger("poller: Already running");
|
||||||
|
if ($pidfile->running_time() > 9*60) {
|
||||||
|
$pidfile->kill();
|
||||||
|
logger("poller: killed stale process");
|
||||||
|
// Calling a new instance
|
||||||
|
proc_run('php','include/poller.php');
|
||||||
|
}
|
||||||
exit;
|
exit;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -86,9 +86,15 @@ function queue_run(&$argv, &$argc){
|
||||||
|
|
||||||
$lockpath = get_config('system','lockpath');
|
$lockpath = get_config('system','lockpath');
|
||||||
if ($lockpath != '') {
|
if ($lockpath != '') {
|
||||||
$pidfile = new pidfile($lockpath, 'queue.lck');
|
$pidfile = new pidfile($lockpath, 'queue');
|
||||||
if($pidfile->is_already_running()) {
|
if($pidfile->is_already_running()) {
|
||||||
logger("queue: Already running");
|
logger("queue: Already running");
|
||||||
|
if ($pidfile->running_time() > 9*60) {
|
||||||
|
$pidfile->kill();
|
||||||
|
logger("queue: killed stale process");
|
||||||
|
// Calling a new instance
|
||||||
|
proc_run('php',"include/queue.php");
|
||||||
|
}
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -710,7 +710,7 @@ die("ss");
|
||||||
);
|
);
|
||||||
} else {
|
} else {
|
||||||
$r = q("SELECT `thread`.`iid` AS `item_id`, `thread`.`network` AS `item_network`, `contact`.`uid` AS `contact_uid`
|
$r = q("SELECT `thread`.`iid` AS `item_id`, `thread`.`network` AS `item_network`, `contact`.`uid` AS `contact_uid`
|
||||||
FROM $sql_table $sql_post_table INNER JOIN `contact` ON `contact`.`id` = `thread`.`contact-id`
|
FROM $sql_table $sql_post_table STRAIGHT_JOIN `contact` ON `contact`.`id` = `thread`.`contact-id`
|
||||||
AND `contact`.`blocked` = 0 AND `contact`.`pending` = 0
|
AND `contact`.`blocked` = 0 AND `contact`.`pending` = 0
|
||||||
WHERE `thread`.`uid` = %d AND `thread`.`visible` = 1 AND `thread`.`deleted` = 0
|
WHERE `thread`.`uid` = %d AND `thread`.`visible` = 1 AND `thread`.`deleted` = 0
|
||||||
AND `thread`.`moderated` = 0
|
AND `thread`.`moderated` = 0
|
||||||
|
|
Loading…
Reference in a new issue