summaryrefslogtreecommitdiff
path: root/classes/rssutils.php
diff options
context:
space:
mode:
authorAndrew Dolgov <[email protected]>2017-12-02 11:16:33 +0300
committerAndrew Dolgov <[email protected]>2017-12-02 11:16:33 +0300
commit0500e14cc2ea0486364142606f800d0f0763d224 (patch)
tree53f01cb43231c1ac7b2467747b7857f0aac1123c /classes/rssutils.php
parent0567016b4098890b7da451962d1c7a19384ca1bb (diff)
update_rss_feed: transaction lock article processing
Diffstat (limited to 'classes/rssutils.php')
-rw-r--r--classes/rssutils.php15
1 files changed, 13 insertions, 2 deletions
diff --git a/classes/rssutils.php b/classes/rssutils.php
index 349f85996..a511a74c8 100644
--- a/classes/rssutils.php
+++ b/classes/rssutils.php
@@ -591,19 +591,26 @@ class RSSUtils {
$tstart = time();
foreach ($items as $item) {
+ $pdo->beginTransaction();
+
if ($_REQUEST['xdebug'] == 3) {
print_r($item);
}
if (ini_get("max_execution_time") > 0 && time() - $tstart >= ini_get("max_execution_time") * 0.7) {
_debug("looks like there's too many articles to process at once, breaking out", $debug_enabled);
+ $pdo->commit();
break;
}
$entry_guid = strip_tags($item->get_id());
if (!$entry_guid) $entry_guid = strip_tags($item->get_link());
if (!$entry_guid) $entry_guid = RSSUtils::make_guid_from_title($item->get_title());
- if (!$entry_guid) continue;
+
+ if (!$entry_guid) {
+ $pdo->commit();
+ continue;
+ }
$entry_guid = "$owner_uid,$entry_guid";
@@ -727,6 +734,7 @@ class RSSUtils {
WHERE id = ?");
$sth->execute([$base_entry_id]);
+ $pdo->commit();
continue;
}
@@ -895,6 +903,7 @@ class RSSUtils {
$entry_ref_id = $ref_id;
if (RSSUtils::find_article_filter($article_filters, "filter")) {
+ $pdo->commit();
continue;
}
@@ -1048,7 +1057,7 @@ class RSSUtils {
foreach ($enclosures as $enc) {
$enc_url = $enc[0];
$enc_type = $enc[1];
- $enc_dur = $enc[2];
+ $enc_dur = (int)$enc[2];
$enc_title = $enc[3];
$enc_width = intval($enc[4]);
$enc_height = intval($enc[5]);
@@ -1138,6 +1147,8 @@ class RSSUtils {
}
_debug("article processed", $debug_enabled);
+
+ $pdo->commit();
}
_debug("purging feed...", $debug_enabled);