1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
|
<?php
namespace app\controllers\cli;
/** CliContoller
*
* Re-generate cashes of commonly used entities
* like: product categories and trendy products
* (proxy calls make use of PROXY_IGNORE_CACHE)
*
* CliController calls Model methods who create
* cashed data with the exact same arguments as
* when called from the web interface; this way
* the Model::method(arguments) triplete creates
* the same keys as via the web interface.
*
* NOTE: Only Cli interface is allowed
* [if (php_sapi_name() != 'cli') return false;]
*
* The Cli-interfaced script can run manualy or
* (most usual scenario) scheduled via a cron job
* in order to refresh cashes befor expiration.
*
* ---------------------------------------------
*/
class CliContoller
{
/** (re-) cacheCategoriesTree
* regenerate cache for product_categories tree
* @param (void)
*/
public static function cacheCategoriesTree()
{
// Only Cli interface is allowed
if (php_sapi_name() != 'cli') return false;
# PROXY call:
# MARKET \ ProductCategories_model::tree():
# + Refresh Cache
# --------------------------------------
echo textColor("Creating category_products tree Cache ... ", \NORMAL);
$reply = proxy(
[\app\models\market\ProductCategories_model::class, 'tree'],
[], \CACHE_ROOT_TTL,
\PROXY_IGNORE_CACHE
);
echo ($reply == false) ? textColor("Failed\n", \FAIL) : textColor("Done!\n", \SUCCESS);
}
public static function getProductCategories()
{
return \Registry::use('database')->runQuery(
"SELECT * FROM product_categories",
[]
);
}
/** (re-) cacheCategoryByUrl( url )
* regenerate cache of a category_product
* by category's friendly url
* @param $url (string): the category's friendly url
*/
public static function cacheCategoryByUrl(string $url)
{
// Only Cli interface is allowed
if (php_sapi_name() != 'cli') return false;
# PROXY call:
# MARKET \ ProductCategories_model::tree():
# + Refresh Cache
# --------------------------------------
$reply = proxy(
[\app\models\market\ProductCategories_model::class, 'categoryFromUrl'],
[ $url ], \CACHE_CATEGORY_TTL,
\PROXY_IGNORE_CACHE
);
echo ($reply == false) ? textColor("Failed\n", \FAIL) : textColor("Done!\n", \SUCCESS);
}
}
|