Почему файл JSON становится пустым через некоторое время? - PullRequest
1 голос
/ 19 апреля 2019

Я копирую контакты из Propertyware в Podio, используя задание cron, и я уже скопировал контакты в файл contacts.json, чтобы уменьшить количество вызовов API Podio. Однако после копирования 2000+ контактов мой файл JSON опустошается, и API начинает копирование с первого или первого контакта. И контакты копируются порциями по 200 контактов в каждом.

Я не могу найти причину, почему мой файл пустеет через некоторое время?

Вот код

<code>if (!file_exists(PROPERTYWARE_CONTACTS_FILE_NAME)) {
    file_put_contents(PROPERTYWARE_CONTACTS_FILE_NAME, "[]");
}
$response = HttpClient(HTTP_GET, PROPERTYWARE_CONTACTS_URL);

$response = json_decode( preg_replace('/[\x00-\x1F\x80-\xFF]/', '', $response), true );
$saved_records = json_decode( preg_replace('/[\x00-\x1F\x80-\xFF]/', '', file_get_contents(PROPERTYWARE_CONTACTS_FILE_NAME)), true );

$incoming_records = array();
$different_from_saved = array();
$old_items = array();

foreach ($response as $key => $val) {
    if ($key == "records") {
        $incoming_records = $val;
    }
}

foreach ($incoming_records as $incoming_record) {
    $add_it = true;
    foreach ($saved_records as $saved_record) {
        if ($saved_record == $incoming_record) {
            $add_it = false;
            array_push($old_items, $incoming_record);
        }
    }
    if ($add_it) {
        array_push($different_from_saved, $incoming_record);

    }
}

if (count($different_from_saved) > 0) {
    print "\nDifferent Data";
}
updateInPodio($different_from_saved, CONTACTS_APP_ID, $old_items);



function updateInPodio($items, $app_id, $old_items)
{
    $old_items_count = count($old_items);
    $new_items_count = count($items);
    $pushed_into_podio = 0;
    $saveToFile = [];
    foreach ($old_items as $old_item) {
        array_push($saveToFile, (object)$old_item);
    }
    try {
        foreach ($items as $item) {
            $phones = [];
            $emails = [];
            $fields = [];
            $fields['propertyware'] = "YES";

            if(!empty($item[0]))
                $fields['entitiy-id'] = $item[0];
            if(!empty($item[1]))
                $fields['first-name'] = $item[1];
            if(!empty($item[2]))
                $fields['last-name'] = $item[2];
            if(!empty($item[3]))
                $fields['company'] = $item[3];

            $response = PodioItem::create($app_id, ["fields" => $fields]);
            $pushed_into_podio++;
            array_push($saveToFile, (object)$item);
        }
        file_put_contents(PROPERTYWARE_CONTACTS_FILE_NAME, json_encode($saveToFile));
    } catch (Exception $exception) {
        file_put_contents(PROPERTYWARE_CONTACTS_FILE_NAME, json_encode($saveToFile));
        print "<pre>";
        print_r($exception->getMessage());
        print "
"; $ to = "abdulhaye111@gmail.com"; $ subject = "Исключение при отправке контактов в Podio"; $ message = "
OLD_CONTACTS: $ old_items_count
NEW_CONTACTS: $ new_items_count
PUSHED_CONTACTS: $ отправлено_into_podio
*8 1019 *»$ exception-> GetMessage (). $ header = "From: noreply@propertymanagementoh.com \ r \ n"; $ header. = "MIME-Version: 1.0 \ r \ n"; $ header. = "Content-type: text / html \ r \ n"; $ retval = mail ($ to, $ subject, $ message, $ header); if ($ retval == true) { echo "Сообщение успешно отправлено ..."; } еще { echo "Сообщение не может быть отправлено ..."; } } file_put_contents (PROPERTYWARE_CONTACTS_FILE_NAME, json_encode ($ saveToFile)); print "
OLD_ITEMS: $ old_items_count
NEW_ITEMS: $ new_items_count
PUSHED_ITEMS: $ pressed_into_podio
"; заголовок ("Местоположение: http://propertymanagementoh.com/dev/building.php"); заголовок ("Местоположение: http://propertymanagementoh.com/dev/lease.php"); заголовок ("Местоположение: http://propertymanagementoh.com/dev/leasePayments.php"); заголовок ("Местоположение: http://propertymanagementoh.com/dev/protfolioBills.php"); заголовок ("Местоположение: http://propertymanagementoh.com/dev/units.php"); }
...