質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

Ajax

Ajaxとは、Webブラウザ内で搭載されているJavaScriptのHTTP通信機能を使って非同期通信を利用し、インターフェイスの構築などを行う技術の総称です。XMLドキュメントを指定したURLから読み込み、画面描画やユーザの操作などと並行してサーバと非同期に通信するWebアプリケーションを実現することができます。

AWS(Amazon Web Services)

Amazon Web Services (AWS)は、仮想空間を機軸とした、クラスター状のコンピュータ・ネットワーク・データベース・ストーレッジ・サポートツールをAWSというインフラから提供する商用サービスです。

Q&A

0回答

446閲覧

AjaxからPHPに情報を送りたい

k1225

総合スコア21

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

Ajax

Ajaxとは、Webブラウザ内で搭載されているJavaScriptのHTTP通信機能を使って非同期通信を利用し、インターフェイスの構築などを行う技術の総称です。XMLドキュメントを指定したURLから読み込み、画面描画やユーザの操作などと並行してサーバと非同期に通信するWebアプリケーションを実現することができます。

AWS(Amazon Web Services)

Amazon Web Services (AWS)は、仮想空間を機軸とした、クラスター状のコンピュータ・ネットワーク・データベース・ストーレッジ・サポートツールをAWSというインフラから提供する商用サービスです。

0グッド

2クリップ

投稿2020/08/22 00:02

編集2020/08/23 22:46

前提・実現したいこと

Ajaxを使ってJavascriptからphpにデータを送り、クラウドサーバー(AWS Linux2)に保存しています。たまになのですが、保存されたファイルを見てみると、.csv Filesize 0となっていて名前と内容がないことがあります。1日後や早くて10分後にもう一度送ると作動します。同じコンピュータからでもきちんと作動しない時があります。javascript,phpともにエラーは出ていません。情報がどこで消えたのか分からず、タイミングも予測できないので大変困っています。バックエンドには初心者で、何が問題なのかわかりません...

該当のソースコード

main.js

JavaScript

1function saveData(name, data){ 2 var xhr = new XMLHttpRequest(); 3 xhr.open('POST', 'write_data.php'); // 'write_data.php' is the path to the php file described above. 4 xhr.setRequestHeader('Content-Type', 'application/json'); 5 xhr.send(JSON.stringify({filename: name, filedata: data})); 6} 7 8//最後 9//jsPsych.data.get()は問題なく作動しています。 10saveData(prolificid + random_string, jsPsych.data.get().csv());

write_data.php

php

1<?php 2 $post_data = json_decode(file_get_contents('php://input'), true); 3 // the directory "data" must be writable by the server 4 $name = "/var/www/data/".$post_data['filename'].".csv"; 5 $data = $post_data['filedata']; 6 // write the file to disk 7 file_put_contents($name, $data); 8?>

イメージ説明

補足情報(FW/ツールのバージョンなど)

PHP ver7.4

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

m.ts10806

2020/08/22 00:04

POSTで送信しているなら$_POSTで受け取ってみては?デバッグはされましたか?
退会済みユーザー

退会済みユーザー

2020/08/22 00:23

acces_log の類はチェックしていますか? webサーバープログラム側のアクセスログで受信データサイズが適切かどうか念の為確認してみては。
退会済みユーザー

退会済みユーザー

2020/08/22 13:13

ajaxで送っているnameが正確に(今は異常にアバウトすぎる)どのように決まるか ajaxで送っているdataがどんなサイズでどんな内容のものか ajaxで送っている頻度がどの程度か 詳細に説明する必要があると思います。 あとm6uさんも言ってるようにhttp(s)の当該リクエストのレスポンスステータスコードも確認してください。
k1225

2020/08/23 22:48 編集

ありがとうございます。バックエンドを触ったことがなく、分かりにくい質問になってしまって申し訳ありません。 nameはランダムに生成した4文字で、データは130000程度のcsvファイルです(質問に写真を追加しました)。一般的にデータサイズは妥当でしょうか? 今のところ数ファイルですが、100ほど集める予定です。頻度は読めないのですが、早くて1日以内に数十分おきくらいを予想しています(違うユーザーから同時に送信される場合もあると思います)。 あと、専門用語やシステム等よくわかっていないのですが、どこから何を確認すれば良いのかもう少し手解いて説明していただけると非常に助かります...
退会済みユーザー

退会済みユーザー

2020/08/23 23:10

自分で全てを完全に分かっていないことを不特定多数からアクセスのある場所でしてしまうのは非常に危険です。ローカル環境なら気にすることもないのですが。。。 まずはローカル環境で動作させて、正常動作が確認できてから本番環境に設置するのが普通です。 十分丁寧に聞いてるつもりなので、分からないのであれば、まずは本番環境でのサービスを止めて、ローカル環境を構築して理解するところから始めた方がいいと思いますよ。 ランダムに生成した4文字がぶつかることはないのですか?正確にどのように決まるのかが分からず判断できません。 再度聞きますが、頻度はどの程度なのでしょうか? こちらも再度聞きますが、レスポンスステータスコードの確認結果も教えて下さい。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだ回答がついていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問