OEmbed and parse_url are now cached in dedicated tables
This commit is contained in:
parent
c4ba035ee3
commit
d5e1f33506
6 changed files with 49 additions and 13 deletions
2
boot.php
2
boot.php
|
@ -36,7 +36,7 @@ define ( 'FRIENDICA_PLATFORM', 'Friendica');
|
||||||
define ( 'FRIENDICA_CODENAME', 'Asparagus');
|
define ( 'FRIENDICA_CODENAME', 'Asparagus');
|
||||||
define ( 'FRIENDICA_VERSION', '3.5-dev' );
|
define ( 'FRIENDICA_VERSION', '3.5-dev' );
|
||||||
define ( 'DFRN_PROTOCOL_VERSION', '2.23' );
|
define ( 'DFRN_PROTOCOL_VERSION', '2.23' );
|
||||||
define ( 'DB_UPDATE_VERSION', 1192 );
|
define ( 'DB_UPDATE_VERSION', 1193 );
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief Constant with a HTML line break.
|
* @brief Constant with a HTML line break.
|
||||||
|
|
|
@ -1021,6 +1021,26 @@ function db_definition() {
|
||||||
"receiver-uid" => array("receiver-uid"),
|
"receiver-uid" => array("receiver-uid"),
|
||||||
)
|
)
|
||||||
);
|
);
|
||||||
|
$database["oembed"] = array(
|
||||||
|
"fields" => array(
|
||||||
|
"url" => array("type" => "varchar(255)", "not null" => "1", "primary" => "1"),
|
||||||
|
"content" => array("type" => "text", "not null" => "1"),
|
||||||
|
),
|
||||||
|
"indexes" => array(
|
||||||
|
"PRIMARY" => array("url"),
|
||||||
|
)
|
||||||
|
);
|
||||||
|
$database["parsed_url"] = array(
|
||||||
|
"fields" => array(
|
||||||
|
"url" => array("type" => "varchar(255)", "not null" => "1", "primary" => "1"),
|
||||||
|
"guessing" => array("type" => "tinyint(1)", "not null" => "1", "default" => "0", "primary" => "1"),
|
||||||
|
"oembed" => array("type" => "tinyint(1)", "not null" => "1", "default" => "0", "primary" => "1"),
|
||||||
|
"content" => array("type" => "text", "not null" => "1"),
|
||||||
|
),
|
||||||
|
"indexes" => array(
|
||||||
|
"PRIMARY" => array("url", "guessing", "oembed"),
|
||||||
|
)
|
||||||
|
);
|
||||||
$database["pconfig"] = array(
|
$database["pconfig"] = array(
|
||||||
"fields" => array(
|
"fields" => array(
|
||||||
"id" => array("type" => "int(11)", "not null" => "1", "extra" => "auto_increment", "primary" => "1"),
|
"id" => array("type" => "int(11)", "not null" => "1", "extra" => "auto_increment", "primary" => "1"),
|
||||||
|
|
|
@ -968,12 +968,7 @@ function add_page_info_data($data) {
|
||||||
function query_page_info($url, $no_photos = false, $photo = "", $keywords = false, $keyword_blacklist = "") {
|
function query_page_info($url, $no_photos = false, $photo = "", $keywords = false, $keyword_blacklist = "") {
|
||||||
require_once("mod/parse_url.php");
|
require_once("mod/parse_url.php");
|
||||||
|
|
||||||
$data = Cache::get("parse_url:".$url);
|
$data = parseurl_getsiteinfo_cached($url, true);
|
||||||
if (is_null($data)){
|
|
||||||
$data = parseurl_getsiteinfo($url, true);
|
|
||||||
Cache::set("parse_url:".$url,serialize($data), CACHE_DAY);
|
|
||||||
} else
|
|
||||||
$data = unserialize($data);
|
|
||||||
|
|
||||||
if ($photo != "")
|
if ($photo != "")
|
||||||
$data["images"][0]["src"] = $photo;
|
$data["images"][0]["src"] = $photo;
|
||||||
|
|
|
@ -13,6 +13,12 @@ function oembed_fetch_url($embedurl, $no_rich_type = false){
|
||||||
|
|
||||||
$a = get_app();
|
$a = get_app();
|
||||||
|
|
||||||
|
$r = q("SELECT * FROM `oembed` WHERE `url` = '%s'",
|
||||||
|
dbesc(normalise_link($embedurl)));
|
||||||
|
|
||||||
|
if ($r)
|
||||||
|
$txt = $r[0]["content"];
|
||||||
|
else
|
||||||
$txt = Cache::get($a->videowidth . $embedurl);
|
$txt = Cache::get($a->videowidth . $embedurl);
|
||||||
|
|
||||||
// These media files should now be caught in bbcode.php
|
// These media files should now be caught in bbcode.php
|
||||||
|
@ -66,9 +72,15 @@ function oembed_fetch_url($embedurl, $no_rich_type = false){
|
||||||
|
|
||||||
if ($txt[0]!="{")
|
if ($txt[0]!="{")
|
||||||
$txt='{"type":"error"}';
|
$txt='{"type":"error"}';
|
||||||
else //save in cache
|
else { //save in cache
|
||||||
|
$j = json_decode($txt);
|
||||||
|
if ($j->type != "error")
|
||||||
|
q("INSERT INTO `oembed` (`url`, `content`) VALUES ('%s', '%s')",
|
||||||
|
dbesc(normalise_link($embedurl)), dbesc($txt));
|
||||||
|
|
||||||
Cache::set($a->videowidth . $embedurl,$txt, CACHE_DAY);
|
Cache::set($a->videowidth . $embedurl,$txt, CACHE_DAY);
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
$j = json_decode($txt);
|
$j = json_decode($txt);
|
||||||
|
|
||||||
|
@ -85,7 +97,7 @@ function oembed_fetch_url($embedurl, $no_rich_type = false){
|
||||||
// If fetching information doesn't work, then improve via internal functions
|
// If fetching information doesn't work, then improve via internal functions
|
||||||
if (($j->type == "error") OR ($no_rich_type AND ($j->type == "rich"))) {
|
if (($j->type == "error") OR ($no_rich_type AND ($j->type == "rich"))) {
|
||||||
require_once("mod/parse_url.php");
|
require_once("mod/parse_url.php");
|
||||||
$data = parseurl_getsiteinfo($embedurl, true, false);
|
$data = parseurl_getsiteinfo_cached($embedurl, true, false);
|
||||||
$j->type = $data["type"];
|
$j->type = $data["type"];
|
||||||
|
|
||||||
if ($j->type == "photo") {
|
if ($j->type == "photo") {
|
||||||
|
|
|
@ -56,7 +56,15 @@ function completeurl($url, $scheme) {
|
||||||
|
|
||||||
function parseurl_getsiteinfo_cached($url, $no_guessing = false, $do_oembed = true) {
|
function parseurl_getsiteinfo_cached($url, $no_guessing = false, $do_oembed = true) {
|
||||||
|
|
||||||
$data = Cache::get("parse_url:".$no_guessing.":".$do_oembed.":".$url);
|
if ($url == "")
|
||||||
|
return false;
|
||||||
|
|
||||||
|
$r = q("SELECT * FROM `parsed_url` WHERE `url` = '%s' AND `guessing` = %d AND `oembed` = %d",
|
||||||
|
dbesc(normalise_link($url)), intval(!$no_guessing), intval($do_oembed));
|
||||||
|
|
||||||
|
if ($r)
|
||||||
|
$data = $r[0]["content"];
|
||||||
|
|
||||||
if (!is_null($data)) {
|
if (!is_null($data)) {
|
||||||
$data = unserialize($data);
|
$data = unserialize($data);
|
||||||
return $data;
|
return $data;
|
||||||
|
@ -64,7 +72,8 @@ function parseurl_getsiteinfo_cached($url, $no_guessing = false, $do_oembed = tr
|
||||||
|
|
||||||
$data = parseurl_getsiteinfo($url, $no_guessing, $do_oembed);
|
$data = parseurl_getsiteinfo($url, $no_guessing, $do_oembed);
|
||||||
|
|
||||||
Cache::set("parse_url:".$no_guessing.":".$do_oembed.":".$url,serialize($data), CACHE_DAY);
|
q("INSERT INTO `parsed_url` (`url`, `guessing`, `oembed`, `content`) VALUES ('%s', %d, %d, '%s')",
|
||||||
|
dbesc(normalise_link($url)), intval(!$no_guessing), intval($do_oembed), dbesc(serialize($data)));
|
||||||
|
|
||||||
return $data;
|
return $data;
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
<?php
|
<?php
|
||||||
|
|
||||||
define( 'UPDATE_VERSION' , 1192 );
|
define( 'UPDATE_VERSION' , 1193 );
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*
|
*
|
||||||
|
|
Loading…
Reference in a new issue