From 4f24494b0baca1d991cbc74bf3929631c657b676 Mon Sep 17 00:00:00 2001 From: Friendika Date: Mon, 12 Sep 2011 19:42:10 -0700 Subject: [PATCH] Dreamhost's unreliable process model is really getting irritating --- boot.php | 2 +- mod/item.php | 26 ++++++++++++++++++-------- mod/network.php | 38 ++++++++++++++++++++++++++++++++++++++ 3 files changed, 57 insertions(+), 9 deletions(-) diff --git a/boot.php b/boot.php index 47af7ae44d..19c8a86c6f 100644 --- a/boot.php +++ b/boot.php @@ -7,7 +7,7 @@ require_once('include/text.php'); require_once("include/pgettext.php"); -define ( 'FRIENDIKA_VERSION', '2.2.1100' ); +define ( 'FRIENDIKA_VERSION', '2.2.1101' ); define ( 'DFRN_PROTOCOL_VERSION', '2.21' ); define ( 'DB_UPDATE_VERSION', 1087 ); diff --git a/mod/item.php b/mod/item.php index e6ce1ea6f8..025a12a323 100644 --- a/mod/item.php +++ b/mod/item.php @@ -83,7 +83,7 @@ function item_post(&$a) { if(($r === false) || (! count($r))) { notice( t('Unable to locate original post.') . EOL); if(x($_POST,'return')) - goaway($a->get_baseurl() . "/" . $_POST['return'] ); + goaway($a->get_baseurl() . "/" . $return_path ); killme(); } $parent_item = $r[0]; @@ -112,7 +112,7 @@ function item_post(&$a) { if(! can_write_wall($a,$profile_uid)) { notice( t('Permission denied.') . EOL) ; if(x($_POST,'return')) - goaway($a->get_baseurl() . "/" . $_POST['return'] ); + goaway($a->get_baseurl() . "/" . $return_path ); killme(); } @@ -198,7 +198,7 @@ function item_post(&$a) { if(! strlen($body)) { info( t('Empty post discarded.') . EOL ); if(x($_POST,'return')) - goaway($a->get_baseurl() . "/" . $_POST['return'] ); + goaway($a->get_baseurl() . "/" . $return_path ); killme(); } } @@ -550,9 +550,9 @@ function item_post(&$a) { ); proc_run('php', "include/notifier.php", 'edit_post', "$post_id"); - if((x($_POST,'return')) && strlen($_POST['return'])) { - logger('return: ' . $_POST['return']); - goaway($a->get_baseurl() . "/" . $_POST['return'] ); + if((x($_POST,'return')) && strlen($return_path)) { + logger('return: ' . $return_path); + goaway($a->get_baseurl() . "/" . $return_path ); } killme(); } @@ -799,11 +799,10 @@ function item_post(&$a) { else { logger('mod_item: unable to retrieve post that was just stored.'); notify( t('System error. Post not saved.')); - goaway($a->get_baseurl() . "/" . $_POST['return'] ); + goaway($a->get_baseurl() . "/" . $return_path ); // NOTREACHED } - proc_run('php', "include/notifier.php", $notify_type, "$post_id"); $datarray['id'] = $post_id; $datarray['plink'] = $a->get_baseurl() . '/display/' . $user['nickname'] . '/' . $post_id; @@ -835,6 +834,17 @@ function item_post(&$a) { } } + // This is a real juggling act on shared hosting services which kill your processes + // e.g. dreamhost. We used to start delivery to our native delivery agents in the background + // and then run our plugin delivery from the foreground. We're now doing plugin delivery first, + // because as soon as you start loading up a bunch of remote delivey processes, *this* page is + // likely to get killed off. If you end up looking at an /item URL and a blank page, + // it's very likely the delivery got killed before all your friends could be notified. + // Currently the only realistic fixes are to use a reliable server - which precludes shared hosting, + // or cut back on plugins which do remote deliveries. + + proc_run('php', "include/notifier.php", $notify_type, "$post_id"); + logger('post_complete'); // figure out how to return, depending on from whence we came diff --git a/mod/network.php b/mod/network.php index 6684889e3d..072b20b921 100644 --- a/mod/network.php +++ b/mod/network.php @@ -313,6 +313,23 @@ function network_content(&$a, $update = 0) { // Normal conversation view // Show conversation by activity date +/* created date order +$r = q("SELECT `item`.`id` AS `item_id`, `contact`.`uid` AS `contact_uid` +FROM `item` LEFT JOIN `contact` ON `contact`.`id` = `item`.`contact-id` +WHERE `item`.`uid` = %d AND `item`.`visible` = 1 AND `item`.`deleted` = 0 +AND `contact`.`blocked` = 0 AND `contact`.`pending` = 0 +AND `item`.`parent` = `item`.`id` +$sql_extra +ORDER BY `item`.`created` DESC LIMIT %d ,%d ", +intval(local_user()), +intval($a->pager['start']), +intval($a->pager['itemspage']) +); +*/ + + + + // First fetch a known number of parent items @@ -344,6 +361,24 @@ function network_content(&$a, $update = 0) { $parents_arr[] = $rr['item_id']; $parents_str = implode(', ', $parents_arr); +/* created order +$r = q("SELECT `item`.*, `item`.`id` AS `item_id`, +`contact`.`name`, `contact`.`photo`, `contact`.`url`, `contact`.`rel`, `contact`.`writable`, +`contact`.`network`, `contact`.`thumb`, `contact`.`dfrn-id`, `contact`.`self`, +`contact`.`id` AS `cid`, `contact`.`uid` AS `contact-uid` +FROM `item`, (SELECT `p`.`id`,`p`.`created` FROM `item` AS `p` WHERE `p`.`parent`=`p`.`id`) as `parentitem`, `contact` +WHERE `item`.`uid` = %d AND `item`.`visible` = 1 AND `item`.`deleted` = 0 +AND `contact`.`id` = `item`.`contact-id` +AND `contact`.`blocked` = 0 AND `contact`.`pending` = 0 +AND `item`.`parent` = `parentitem`.`id` AND `item`.`parent` IN ( %s ) +$sql_extra +ORDER BY `parentitem`.`created` DESC, `item`.`gravity` ASC, `item`.`created` ASC ", +intval(local_user()), +dbesc($parents_str) +*/ + + + $r = q("SELECT `item`.*, `item`.`id` AS `item_id`, `contact`.`name`, `contact`.`photo`, `contact`.`url`, `contact`.`rel`, `contact`.`writable`, `contact`.`network`, `contact`.`thumb`, `contact`.`dfrn-id`, `contact`.`self`, @@ -364,6 +399,9 @@ function network_content(&$a, $update = 0) { intval(local_user()), dbesc($parents_str) ); + + + } }