Master-X
Форум | Новости | Статьи
Главная » Форум » Программинг, Скрипты, Софт, Сервисы » 
Тема: Гуру php, помогите с кодом
цитата
12/05/12 в 16:19
 Woland
Автор не онлайн, а сам я блять боюсь накосячить и потом откатывацо с бекапа ...
Код:

Код:


<?php
$base_file = $_SERVER['DOCUMENT_ROOT'].'/porn/data/1_base.dat';
$testtable_file = $_SERVER['DOCUMENT_ROOT'].'/porn/data/1_testable.dat';

if (false == file_exists($testtable_file)) {
   print 'Cannot find '.$testtable_file;
   die();
}

if (false == file_exists($base_file)) {
   print 'Cannot find '.$base_file;
   die();
}

$size = filesize($testtable_file);
if ($size > 5) {
   
   $file_content = file($testtable_file);
   unset($file_content[0]);
   $content = implode("", $file_content);
   
   copy($base_file, $base_file.'.'.time());
   
   $fp = fopen($base_file, 'a');
   if (!$fp) {
      print "Cannot open file $base_file for writing.";
      die();
   }
   
   fwrite($fp, $content);
   fclose($fp);
   
   file_put_contents($testtable_file,null);
   
   print "Two files joined.";
} else {
   print "No action required";
}
?>



Ну понятно, что из файла 1_testable переносит содержимое в файл 1_base.

Код для случая, когда файлов этих только два, они за номером 1.
Сейчас этих файлов 100, т.е. надо в верхних переменных циклом плюсить по еденичке сто раз, в диапазоне 1-100, т.е. из файла 1_testable.dat мувить всё в 1_base.dat, а из файла 74_testable.dat мувить всё в 74_base.dat, например. Короче данный код надо выполнить 100 раз, каждый раз прибавляя 1 к переменным вверху.

Подскажите, как добавить этот цикл. Желательно для диапазона ввести переменную, т.е. скажем если переменная вписана 100 - будет диапазон 1-100 в цикле, если переменная 50 - будет 1-50.
цитата
12/05/12 в 16:35
 Ailk
Код:

$my_param = 100; // ставь скоко нада.
for ($i=0; $i<=$my_param; ++$i) // от 1 до нужного тебе числа.
{
$base_file = $_SERVER['DOCUMENT_ROOT'].'/porn/data/'.$i.'_base.dat';
$testtable_file = $_SERVER['DOCUMENT_ROOT'].'/porn/data/'.$i.'_testable.dat';

if (!file_exists($testtable_file)) { // так попроще ))
   print 'Cannot find '.$testtable_file;
   die();
}

if (!file_exists($base_file)) {
   print 'Cannot find '.$base_file;
   die();
}

$size = filesize($testtable_file);
if ($size > 5) {
   
   $file_content = file($testtable_file);
   unset($file_content[0]);
   $content = implode("", $file_content);
   
   copy($base_file, $base_file.'.'.time());
   
   $fp = fopen($base_file, 'a');
   if (!$fp) {
      print "Cannot open file $base_file for writing.";
      die();
   }
   
   fwrite($fp, $content);
   fclose($fp);
   
   file_put_contents($testtable_file,null);
   
   print "Two files joined.";
} else {
   print "No action required";
}
}
цитата
12/05/12 в 16:44
 Woland
Спасибо, щас затестируем icon_smile.gif)
Но $i=0 это конечно эпик фейл на тему "программисты считают с нуля" icon_smile.gif
цитата
12/05/12 в 17:04
 Woland
Ailk: Спасибо, работает! Ну точно гуру smail27.gif
цитата
12/05/12 в 17:24
 Woland
Вот, ещё тема есть icon_smile.gif

Есть некий код:

Код:

<?php
require("./admin/config.php");
require_once($setup['files_path']."admin/fun.inc.php");
$calc_time = FileReadLine($setup['files_path']."data/calctime.dat");

if(mktime() - $calc_time > $setup['update_time'])
{FileWrite($setup['files_path']."data/calctime.dat",mktime());
include($setup['files_path']."calculate.php");
calculate();}$graber_time = FileReadLine($setup['files_path']."data/grabertime.dat");

if(mktime() - $graber_time > $setup['grabing_period']) {FileWrite($setup['files_path']."data/grabertime.dat",mktime());
include("parser.php");
include("graber.php");}
?>


выполняется он по крону раз в минуту. Файлы с функциями этими (parser, graber и т.д. зазенденные). Что мне надо ? Мне надо модифицировать этот файл таким образом, чтобы при каждом его вызове (не смотря ни на какие там математические блять вычисления и переменные) отработали только

include("parser.php");
include("graber.php");

эти две строчки. Остальное, которое calculate.php, мне не надо чтобы в нём отрабатывали. Я вобщем хочу отдельными кронами прописать этот модифицированный файл, грабер (последние эти две строчки чтоб работали только в нём), чтобы он несколько раз в минуту выполнялся, чтоб быстрее грабил. Просто вызов его из крона эффекта не даёт никакого. Просто прописывание крона несколько раз в минуту меня не устраивает, т.к. calculate этот нехило грузит всё и его много раз в минуту нехорошо выполнять, да и вычисления эти мешают, даже если прописать крон 6 раз в минуту - больше 3-х выполнить не даёт.

первый иф надо убрать нахуй, второй иф надо кастрировать, чтобы он выполнился полюбасу, как-то так ...
цитата
12/05/12 в 17:50
 Woland
Код:
<?php
require("./admin/config.php");
require_once($setup['files_path']."admin/fun.inc.php");
$graber_time = FileReadLine($setup['files_path']."data/grabertime.dat");

FileWrite($setup['files_path']."data/grabertime.dat",mktime());
include("parser.php");
include("graber.php");
?>


или есть ещё чё-то лишнее там ?
цитата
12/05/12 в 18:07
 Ailk
Woland писал:
Спасибо, щас затестируем icon_smile.gif)
Но $i=0 это конечно эпик фейл на тему "программисты считают с нуля" icon_smile.gif

Ну, в последней части цикла for стоит сначала добавление инкремента, только потом выполнение, поэтому будет прописываться как нада на выводе ))

Касательно кода с граббером смари.
эта часть кода:
Код:

$graber_time = FileReadLine($setup['files_path']."data/grabertime.dat"); // считывается последнее время обновления вероятно

if(mktime() - $graber_time > $setup['grabing_period']) // тут проверка прошедшего времени с последнего обновления по внутренним настройкам граббера твоего.
{ // собсна дальше запись времени текущего времени (для посл. проверок) и выполнение.
  FileWrite($setup['files_path']."data/grabertime.dat",mktime());
  include("parser.php");
  include("graber.php");
}

запускает граббер по своему времени (которое видимо установлено в настройках граббера )) Надеюсь понял.

в итого получаем:
Код:

require("./admin/config.php");
require_once($setup['files_path']."admin/fun.inc.php");
$graber_time = FileReadLine($setup['files_path']."data/grabertime.dat");

if(mktime() - $graber_time > $setup['grabing_period']) {FileWrite($setup['files_path']."data/grabertime.dat",mktime());
include("parser.php");
include("graber.php");}
Для граббера, и:
Код:

require("./admin/config.php");
require_once($setup['files_path']."admin/fun.inc.php");
$calc_time = FileReadLine($setup['files_path']."data/calctime.dat");

if(mktime() - $calc_time > $setup['update_time'])
{
FileWrite($setup['files_path']."data/calctime.dat",mktime());
include($setup['files_path']."calculate.php");
calculate();
}

для калькуляции. Принцип тот же что и у граббера.

П.С.
Я не гуру, я тока учусь ))
цитата
12/05/12 в 18:26
 Woland
Ailk: Не, надо $i=1; я просто с 0 запустил - оно написало, что нет нихуя такого файла и выпало из цикла icon_smile.gif А при 1 отработало нормательно.


Эта страница в полной версии