Я бы не использовал BigDecimal, если вы заботитесь о производительности. BigDecimal преобразует числа в строку и затем анализирует их снова:
/** Constructs a `BigDecimal` using the decimal text representation of `Double` value `d`, rounding if necessary. */
def decimal(d: Double, mc: MathContext): BigDecimal = new BigDecimal(new BigDec(java.lang.Double.toString(d), mc), mc)
Я буду придерживаться математических манипуляций, поскольку предложил Kaito .
Технически видно, что скрипт php запускается там, где находится cron; ех. Если cron был в / bin / cron, то это утверждение будет искать common.php в /bin/includes/common.php.
Итак, вам, вероятно, придется использовать fullpaths или использовать set_include_path
set_include_path('/home/username123/public_html/includes/');
require 'common.php';
Ноно. вам нужно использовать абсолютные пути на коронках.
то, что я делаю:
// supouse your cron is on app/cron and your lib is on app/lib
$base = dirname(dirname(__FILE__)); // now $base contains "app"
include_once($base . '/lib/db.inc');
// move on
Если относительный путь не работает, значит, текущий каталог, заданный при выполнении задач cron, не является / home / username123 / public_html. В таких случаях вы можете использовать только абсолютный путь.
Это звучит так же просто, как только какой-то скрипт, который вы запускаете, устанавливает include_path, и вы включаете этот скрипт. используйте phpinfo (), чтобы проверить глобальную локальную настройку include_path.
Альтернативой решениям, рекомендующим спецификацию абсолютного пути, является использование chdir
в вашем скрипте. Таким образом, ваши относительные пути будут работать должным образом.
Например, чтобы перейти в каталог сценария:
$curr_dir = dirname(__FILE__);
chdir($curr_dir);
Чтобы перейти в родительский каталог скрипта:
$curr_dir = dirname(__FILE__);
chdir($curr_dir . "/..");
И и т. д.