私のコードでは、複数の json 文字列をファイルに書き込む必要があります。私がそうすると、書かれているものの最後が一見ランダムな量の文字で切り取られます.
私は最初に を使用して試しfwrite()
、次に だけを使用してテストしましfile_put_contents()
たが、ファイルへの書き込みの両方の方法で文字が切り捨てられました。そのコード スニペットは次のようになります。
print_r( json_encode($verified_results) );
file_put_contents($results_file, json_encode($verified_results));
/*$fh = fopen($results_file, 'w'); // or die("can't open file");
$stringData = json_encode($verified_results) ;
fwrite($fh, $stringData);
fclose($fh);
print_r(preg_last_error());
*/
print_r
ファイルに書き込む前に完全な文字列を返す
ため、json文字列は書き込み後もそのままであることを知っています。
切り取られているテキストは次のとおりです。
108 characters
,"elapsedTime":"1 minute ago","hotel_cat":null,"visible":true,"hash_id":"aed1b4c6c515ea040c2e49d874c883a1"}]
110 characters
5","elapsedTime":"11 hours ago","hotel_cat":null,"visible":true,"hash_id":"22aa8da3d0b8ef44ec07f8521986fbac"}]
最初のファイルのサイズは 47KB で、カットオフ ポイントはランダムなポイントで 108 文字を残します (無効な文字によるものではありません)。
2 番目のファイルのサイズは 52 KB で、カットオフ ポイントはランダムなポイントで 110 文字を残します。
このような小さなファイルでこれを引き起こしているのは何ですか?
編集:
(完全なコード)foreach ($sift_usernames as $key => $user) {
$username = $user['username'];
if(is_dir(APP_ROOT."sift_users/".$username)) {
if(is_file((APP_ROOT."sift_users/" . $username . "/operations.json"))) {
$operations_file = APP_ROOT."sift_users/" . $username . "/operations.json";
$contents = file_get_contents($operations_file);
$file_contents = json_decode($contents, true);
$get_general_settings = file_get_contents(APP_ROOT. "sift_users/".$username."/general_settings.json");
$general_settings = json_decode($get_general_settings, true);
if(!empty($file_contents)) {
$file_contents = json_decode($contents, true);
$user_operations = array();
$testing = "";
foreach($file_contents as $operation_name=>$op) {
if(!file_exists(APP_ROOT. "sift_users/". $username ."/operations_data")) {
mkdir((APP_ROOT. "sift_users/". $username ."/operations_data"), 0777, true);
}
if(!file_exists(APP_ROOT. "sift_users/". $username ."/operations_data/". $operation_name)) {
mkdir((APP_ROOT. "sift_users/". $username ."/operations_data/". $operation_name), 0777, true);
}
$results_filename = 'results_'.date('m-d-Y');
$search_results = social_search($operation_name, $general_settings);
if(!file_exists(APP_ROOT. "sift_users/". $username ."/operations_data/". $operation_name."/".$results_filename)) {
print_r( json_encode($search_results) );
file_put_contents((APP_ROOT. "sift_users/". $username ."/operations_data/". $operation_name."/".$results_filename), json_encode($search_results));
chmod((APP_ROOT. "sift_users/". $username ."/operations_data/". $operation_name."/".$results_filename), 0777);
} else {
$results_file = APP_ROOT. "sift_users/". $username ."/operations_data/". $operation_name."/".$results_filename;
$old_contents = file_get_contents($results_file);
$old_results = json_decode($old_contents, true);
$duplicate_result = false;
$verified_results = array();
foreach($search_results as $new_key => $new_result) {
foreach ($old_results as $old_key => $old_result) {
if($old_result['hash_id'] == $new_result->hash_id)
$duplicate_result = true;
}
if(!$duplicate_result) {
array_push($verified_results, $new_result);
}
}
foreach($old_results as $key => $result) {
array_push($verified_results, $result);
}
print_r( json_encode($verified_results) );
file_put_contents($results_file, json_encode($verified_results));
/*$fh = fopen($results_file, 'w'); // or die("can't open file");
$stringData = json_encode($verified_results) ;
fwrite($fh, $stringData);
fclose($fh);
print_r(preg_last_error());
*/
}
//chmod((APP_ROOT. "sift_users/operations_data/". $operation_name."/testing.json"), 0777);
$user_operations[$username][$operation_name] = $op;
$testing.= $operation_name." - ";
//deleteDir(APP_ROOT. "sift_users/". $username ."/operations_data");
}
}
}
}
}