הזרמת אודיו מתוך שרת אחר
-
יש לי קבצים שיושבים בשרת של ימות המשיח, וברצוני לתת ללקוחותי גישה לשמיעת הקבצים מתוך האתר שלי (PHP/YII2).
אני יכול לקבל את הקבצים בAPI מימות המשיח (זה לינק שמביא הורדת קובץ), אך לכן אני חייב להוסיף בבקשה את מספר וסיסמת המערכת או טוקן.
יש לי לקוחות שאין להם צורך בגישה למערכת הטלפונית עצמה, ולכן אני מעדיף לא להשים שממשק עצמו את פרטי הגישה למערכת, ולכן לא אוכל להזרים ישירות באתר שלי בצד הלקוח מול הקובץ בימות המשיח.
אלא ברצוני ליצור כעין פרוקסי אצלי בשרת שמקבל את הבקשה להשמיע את קובץ פלוני, והוא מתחבר לימות המשיח ומזרים את התוכן שמקבל מימות המשיח (מזמרים ישירות בלי להוריד אלי לשרת, לחכות לסיום ההורדה ואז לשלוח לבקשה, אלא יזירם תוך כדי שהוא שואב משם)
אשמח לדעת איך ניתן לעשות את זה -
@nigun אמר בהזרמת אודיו מתוך שרת אחר:
אוכל לבדוק, אבל בקטע זה אני מעדיף משהו בPHP, שאוכל לשלב אותו בממשק שהוא PHP, ואוכל לשלוט על ההרשאות גישה יחד עם הרשאות ההתחברות
-
ב-PHP -
לך תשבור את הראש, או תמציא את הגלגל,
או כל דבר מעין זה.בנוד - זה ממש פשוט.
הסיבה לכך, שבנוד יש ממש תמיכה בהזרמה.
בPHP לא מכיר כזה דבר.
אתה יכול לבנות לבד כאמור, ו...
אבל הכלל בתכנות גורס ש [כבר לא צריך לחזור עליו]. -
אגב, אתה יכול לעשות שרק ההזרמה תהיה בנוד.
השאר יישאר בPHP. -
-
הוא צריך הזרמה, שלא יתפוס מקום בזיכרון סתם.
-
@MusiCode מה שהבאתי...
תמיד יש מאחורי הקלעים צ'אנקים... ואם הוא יעד הכתיבה הוא קובץ זה כותב ישר לדיסק. אם יעד הכתיבה הוא משתנה, אתה מבזבז זיכרון. אם יעד הכתיבה הוא התשובה לקליינט = הזרמה - כל צ'אנק נשלח ישר ליעד הסופי. -
אוקיי, שומע.
אם עושים echo זה באמת פולט את הכל בצ'אנקים?
בכ"א צריך לעשות איזה פקודה שתדחוף את הכל ללקוח, הגם שהטעינה לא הסתיימה.
לא יודע אם חייבים, אבל קראתי שלפעמים הוא אוגר את הכל עד שיסתיים.באמת אם תעשה אקו + סליפ + אקו 2, תקבל את הכל במרוכז.
את זה ניסיתי פעם. -
@dovid אמר בהזרמת אודיו מתוך שרת אחר:
בדוק פה: https://www.geeksforgeeks.org/download-file-from-url-using-php/
הדוגמא כאן עובדת בסדר גמור
$url = 'https://www.call2all.co.il/ym/api/DownloadFile?&token=vPEPEEV&path=ivr2:/M0000.wav'; // $url = $_GET['file']; $path_parts = pathinfo($url); $ext = $path_parts['extension']; $filename = $path_parts['filename']; header("Content-type: application/$ext"); header("Content-Disposition: attachment; filename=$filename.$ext"); echo file_get_contents($url); -
@MusiCode
אכן echo עובד בבת אחת (אבל מדובר בחמש מגה ככה שזה לא נורא).
אבל יש פקודה אחרת file_put_contents
https://stackoverflow.com/a/3938551/1271037 -
@dovid אמר בהזרמת אודיו מתוך שרת אחר:
אבל יש פקודה אחרת file_put_contents
ואיך אתה שולח את זה לקליינט?
-
@WWW אמר בהזרמת אודיו מתוך שרת אחר:
@dovid אמר בהזרמת אודיו מתוך שרת אחר:
אבל יש פקודה אחרת file_put_contents
ואיך אתה שולח את זה לקליינט?
file_put_contents(fopen("php://output", "w"), fopen("http://someurl/file.zip", 'r'));
או אולי להשתמש בזה במקום file_put_contents
-
זה עשה את העבודה:
<?php $url = 'https://www.call2all.co.il/ym/api/DownloadFile?&token=oKGdVae4&path=ivr2:/M0000.wav'; //$url = $_GET['file']; $path_parts = pathinfo($url); $ext = $path_parts['extension']; $filename = $path_parts['filename']; header("Content-type: application/$ext"); header("Content-Disposition: attachment; filename=$filename.$ext"); $stream = fopen('php://output', 'w'); $ch = curl_init($url); curl_setopt($ch, CURLOPT_READFUNCTION, function($ch, $fd, $length) use ($stream) { return fwrite($stream, fread($fd, $length)); }); curl_exec($ch); curl_close($ch); exit(); //echo file_get_contents($url); //file_put_contents(fopen("php://output", "w"), fopen($url, 'r')); רק אצטרך לראות בהמשך שזה משתלב בJS בדפדפן להשמעת הקבצים
-
היי, תיזהר!...
בבית משפט אני אוכיח שבאמת node.js יותר טוב...
ואז מה?...
8/23