בירור | הרצת כמה סקריפטים במקביל
-
@A0533057932 אמרו לעשות ככה
app.get('/login', (req, res) => { res.render('login', { error: null }); }); app.get('/logout', (req, res) => { res.render('logout', { error: null }); }); app.get('/register', (req, res) => { res.render('register', { error: null }); });
והוא אומר שככה לא טוב לי.
את הרעיון הכללי כן אמרו, רק החלק הטכני שונה. אולי כי הצרכים שלי שונים ממה שהיו צריכים כשכתבו את הקוד הנ"ל.
אני מבין שזו הדרך המקובלת.
@עידו300 הוא הסביר לך את ההבדל בין הגדרת ראוטרים
להגדרת נתיביםapp.get('/login', (req, res) => { res.render('login', { error: null }); }); app.get('/logout', (req, res) => { res.render('logout', { error: null }); }); app.get('/register', (req, res) => { res.render('register', { error: null }); });
זה הגדרת נתיבים
אני לא מכיר NODE טוב אולם זה נראה שהוא מחזיר דף כל שהוא
ובאותו מידה אתה אמור להצליח לשנות את זה
לapp.use('/manageSellers', manageSellers);
או משהו דומה
כלומר אתה פתאום נכנס לשאלה האם התשובה שחוזרת היא HTML או שהיא מפעילה פונקציה והתוצאה שלו חוזרת
או שלא חוזר שום דבר וכד'
אולי אם תתחיל מהתחלה ותפרט בדיוק מה אתה רוצה לעדות יוכלו למקד אותך יותר -
@עידו300 הוא הסביר לך את ההבדל בין הגדרת ראוטרים
להגדרת נתיביםapp.get('/login', (req, res) => { res.render('login', { error: null }); }); app.get('/logout', (req, res) => { res.render('logout', { error: null }); }); app.get('/register', (req, res) => { res.render('register', { error: null }); });
זה הגדרת נתיבים
אני לא מכיר NODE טוב אולם זה נראה שהוא מחזיר דף כל שהוא
ובאותו מידה אתה אמור להצליח לשנות את זה
לapp.use('/manageSellers', manageSellers);
או משהו דומה
כלומר אתה פתאום נכנס לשאלה האם התשובה שחוזרת היא HTML או שהיא מפעילה פונקציה והתוצאה שלו חוזרת
או שלא חוזר שום דבר וכד'
אולי אם תתחיל מהתחלה ותפרט בדיוק מה אתה רוצה לעדות יוכלו למקד אותך יותר@A0533057932 נכנסתי לזה רק בגלל שהוא כתב שזה ההבדל...
כמו שכתבתי, אני צריך ששתי אפליקציות (בתכלס 4-5) יפעלו וששתיהן ישבו על אותו פורט, זה הכל.
אז לא ידעתי שיש הבדל אם אני צריך להציג HTML או לא. אז עכשיו אני מוסיף שהם ממשק API. אבל השאלה אותה שאלה, איך שתיהן ירוצו במקביל בלי להפריע אחת לשניה. -
@ע-ה-דכו-ע טוב, אח"כ אחפור קצ תלראות מה עושה מה שאתה כתבת ומה עושה מה שכתבה לי הבינה, אולי זה הפתרון.
תודה לכולם!
-
@עידו300
אשמח לדבר איתך על מה שאתה בונה. (נראה לי אני בונה כבר שנים את מה שאתה מתכנן)..
אם תסכים במייל אני יעלה לכאן
קראתי את הקוד שלך למטה ובסוף אנחנו לא על אותו פרויקט -
@A0533057932 נכנסתי לזה רק בגלל שהוא כתב שזה ההבדל...
כמו שכתבתי, אני צריך ששתי אפליקציות (בתכלס 4-5) יפעלו וששתיהן ישבו על אותו פורט, זה הכל.
אז לא ידעתי שיש הבדל אם אני צריך להציג HTML או לא. אז עכשיו אני מוסיף שהם ממשק API. אבל השאלה אותה שאלה, איך שתיהן ירוצו במקביל בלי להפריע אחת לשניה.@עידו300 כפי שנראה הידע החסר שלי בnode לא מאפשר לי להבין אותך
אז אני ינסה להסביר שוב את מה שאני מכיר
כי לפי מה שאני יודע אין הרבה הבדל בלוגיקה בין פייתון לNODE בחלק הזהיש לך אפליקציה או שרות שאתה רוצה שיפעל כל הזמן
ויוכלו לגשת אליו דרך הרשת והוא יענה תשובות ויבצע פעולות?מעולה לדבר הזה קוראים אפליקציה \ תוכנה \ סרוויס \ כל שם שיש לו
לדבר כזה יכול להיות המון נתיבים והמון פרמטרים
אבל אין שום צורך שיהיה לו הרב פורטיםפשוט עליך להגדיר נתיבים שונים לכל קריאה
אפשר על ידי הגדרת קבצי ראוטר (ואז למשל אתה מנהל את כל החלק של /admin למשל בקובץ אחד וכל החלק של /user בקובץ אחר וכדו ואז בקובץ הראשי אתה מאגד את כל הראוטרים (וכפי הנראה יכול להגדיר את הנתיב עד הראוטר)
אפשר על ידי נתיבים בקובץ הראשי מה שיותר שייך באפליקציה קטנה
שאז אתה מגדיר את הנתיבים בmain או משהו דומה וזהו -
@עידו300 כפי שנראה הידע החסר שלי בnode לא מאפשר לי להבין אותך
אז אני ינסה להסביר שוב את מה שאני מכיר
כי לפי מה שאני יודע אין הרבה הבדל בלוגיקה בין פייתון לNODE בחלק הזהיש לך אפליקציה או שרות שאתה רוצה שיפעל כל הזמן
ויוכלו לגשת אליו דרך הרשת והוא יענה תשובות ויבצע פעולות?מעולה לדבר הזה קוראים אפליקציה \ תוכנה \ סרוויס \ כל שם שיש לו
לדבר כזה יכול להיות המון נתיבים והמון פרמטרים
אבל אין שום צורך שיהיה לו הרב פורטיםפשוט עליך להגדיר נתיבים שונים לכל קריאה
אפשר על ידי הגדרת קבצי ראוטר (ואז למשל אתה מנהל את כל החלק של /admin למשל בקובץ אחד וכל החלק של /user בקובץ אחר וכדו ואז בקובץ הראשי אתה מאגד את כל הראוטרים (וכפי הנראה יכול להגדיר את הנתיב עד הראוטר)
אפשר על ידי נתיבים בקובץ הראשי מה שיותר שייך באפליקציה קטנה
שאז אתה מגדיר את הנתיבים בmain או משהו דומה וזהו@A0533057932 מצוין, תודה.
מה הדרך הנכונה לעשות את זה? מבחינה טכנית, מה אני כותב. מה הדרך המקובלת, יש כרגע על השולחן 2 דרכים, מה הנכונה? -
@A0533057932 מצוין, תודה.
מה הדרך הנכונה לעשות את זה? מבחינה טכנית, מה אני כותב. מה הדרך המקובלת, יש כרגע על השולחן 2 דרכים, מה הנכונה?@עידו300 כתב בבירור | הרצת כמה סקריפטים במקביל:
@A0533057932 מצוין, תודה.
מה הדרך הנכונה לעשות את זה? מבחינה טכנית, מה אני כותב. מה הדרך המקובלת, יש כרגע על השולחן 2 דרכים, מה הנכונה?ס"ה אני כתבתי לך איך לעשות את זה ישירות בקובץ הראשי, וGPT כתב לך איך לעשות את זה אם כל קוד נמצא בקובץ נפרד.
כלומר, GPT דיבר על מקרה שהקוד
app.get('/login', (req, res) => { res.render('login', { error: null }); });
נמצא בקובץ נפרד בשם login.js ולכן הוא כתב לך להפנות אליו בצורה כזו
app.use('/login', login);
שזה גורם שכאשר ניגשים לנתיב login זה עושה את מה שכתוב בקובץ login שזה מה שאני כתבתי כבר ישירות בקובץ הראשי עצמו.
-
@עידו300 כתב בבירור | הרצת כמה סקריפטים במקביל:
@A0533057932 מצוין, תודה.
מה הדרך הנכונה לעשות את זה? מבחינה טכנית, מה אני כותב. מה הדרך המקובלת, יש כרגע על השולחן 2 דרכים, מה הנכונה?ס"ה אני כתבתי לך איך לעשות את זה ישירות בקובץ הראשי, וGPT כתב לך איך לעשות את זה אם כל קוד נמצא בקובץ נפרד.
כלומר, GPT דיבר על מקרה שהקוד
app.get('/login', (req, res) => { res.render('login', { error: null }); });
נמצא בקובץ נפרד בשם login.js ולכן הוא כתב לך להפנות אליו בצורה כזו
app.use('/login', login);
שזה גורם שכאשר ניגשים לנתיב login זה עושה את מה שכתוב בקובץ login שזה מה שאני כתבתי כבר ישירות בקובץ הראשי עצמו.
@ע-ה-דכו-ע אהה עכשיו הבנתי, טוב שהבהרת את הענין.
אני מעדיף שזה ישאר בכמה קבצים נפרדים, ככה יהיה לי יותר קל. קשה לי להשתלט על קבצים ארוכים עושה לי בלאגן בראש.
אז בכזה מקרה אני צריך לעשות כמו שאמר הGPT.
מצוין, תודה רבה!
-
טוב, אל תבהלו זה הקוד המלא.
ניסיתי לשנות אותו לפי הקוספט של זה
app.use('/login', login);
אבל יש בו קצת בעיה כי הוא משתמש בראוטר אחר או משהו כזה.
אשמח לעזרה איך להתאים אותו למה שהסברתם לי, שאוכל לדעת לטפל בשאר.import express from 'express'; import { YemotRouter } from 'yemot-router2'; import { fileURLToPath } from 'url'; import process from 'process'; import { streets, regions, citys } from './streets_data.js'; import { chooseBuyorrent, chooseCity, chooseBetShemesh, chooseregion, choosestreet, choosenumber, choosefloor, chooseroom, chooseprice, choosephone } from './validate_func.js'; export const app = express(); export const router = YemotRouter({ printLog: true, uncaughtErrorHandler: (error, call) => { console.log(`Uncaught error in ${call.req.path} from ${call.phone}. error stack: ${error.stack}`); return call.id_list_message([{ type: 'text', data: 'אירעה שגיאה' }]); } }); router.events.on('call_hangup', call => console.log(`[example.js] call ${call.callId} was hangup`)); router.events.on('call_continue', call => console.log(`[example.js] call ${call.callId} was continue`)); router.events.on('new_call', call => console.log(`[example.js] new call ${call.callId} from ${call.phone}`)); /** * @typedef {Object} AdData * @property {number} id * @property {string} buyorrent * @property {string} city * @property {string} betShemesh * @property {string} region * @property {string} street * @property {number} number * @property {number} floor * @property {number} room * @property {number} price * @property {string} phone * @property {string} phone2 * @property {string} created_at */ /** * @typedef {Object} AdResponse * @property {string} status * @property {string} [message] * @property {AdData[]} [data] */ /** @param {import('yemot-router2').Call} call */ async function callHandler(call) { console.log("מכין בקשה"); let phone = call.ApiPhone.replace("+972", "0"); const params = new URLSearchParams({ phone }); const url = `https://stamandsefer.co.il/appart/new/getSellerAds.php?${params}`; console.log(url); console.log("שולח בקשה"); /** @type {AdResponse} */ let response; try { const res = await fetch(url, { method: 'GET' }); if (!res.ok) throw new Error(`שגיאת HTTP: ${res.status} ${res.statusText}`); try { response = await res.json(); } catch { throw new Error("התשובה שהתקבלה אינה JSON תקין"); } console.log('Response:', response); if (response.status !== "success" || !Array.isArray(response?.data)) { console.error('שגיאת שרת:', response); call.id_list_message([{ type: "text", data: "אירעה שגיאה בעת שמירת המודעה" }]); return; } } catch (err) { console.error('שגיאה בשליחת הבקשה:', err.message); call.id_list_message([{ type: "text", data: "שגיאה בשליחת המודעה" }]); return; } // עיבוד מודעות for (const adBase of response.data) { let ad = `המודעה היא דירה ל${adBase.buyorrent} ב${adBase.city}`; if (adBase.city === "בית שמש") ad += `ה${adBase.betShemesh}`; ad += ` בשכונה ${adBase.region} ברחוב ${adBase.street} מספר ${adBase.number} קומה ${adBase.floor} ${adBase.room} חדרים במחיר ${adBase.price} טלפון ליצירת קשר ${adBase.phone}`; if (adBase.phone2) ad += ` טלפון נוסף ${adBase.phone2}`; ad = ad.replace(".5", " וחצי").replace("-", "מינוס ").replace(".0",""); console.log(ad); let ok = false; for (let i = 0; i < 3 && !ok; i++) { let toDo = await call.read( [{ type: 'text', data: `${ad} לעריכת המודעה הקש 1 למחיקה 2 ולמודעה הבאה 3` }], 'tap', { max_digits: 1, min_digits: 1, typing_playback_mode: "No", digits_allowed: [1, 2, 3] } ); if (toDo === "1") { ok = await editAd(call, adBase); } else if (toDo === "2" && "1" === await call.read( [{ type: 'text', data: `האם אתה בטוח שברצונך למחוק את המודעה 1 לאישור 2 לביטול` }], 'tap', { max_digits: 1, min_digits: 1, typing_playback_mode: "No", digits_allowed: [1, 2] } )) { await deleteAd(call, adBase, phone); ok = true; } else if (toDo === "3") { ok = true; } else { if (i === 2) call.id_list_message([{ type: 'text', data: 'ניסיון לא חוקי, שלום ולהתראות' }]); } } } } router.get('/', callHandler); app.use(express.urlencoded({ extended: true })); app.use('/manageSellersAd', router); const port = 3000; const isMain = process.argv[1] === fileURLToPath(import.meta.url); if (isMain) { app.listen(port, () => console.log(`example yemot-router2 running on port ${port}`)); } /**********************************************************************/ /** @param {import('yemot-router2').Call} call @param {AdData} adBase */ async function editAd(call, adBase) { let { city, betShemesh, region, street, number, floor, room, price, phone, phone2 } = adBase; let paramsToChange = {}; let ad=""; do { const choice = await call.read( [{ type: 'text', data: 'לעריכת עיר שכונה ורחוב הקש 1, בנין הקש 2, קומה הקש 3 מספר חדרים הקש 4 מחיר הקש 5 טלפון ליצירת קשר הקש 6 וטלפון נוסף 7' }], 'tap', { max_digits: 1, min_digits: 1, typing_playback_mode: "No", digits_allowed: [1, 2, 3, 4, 5, 6, 7] } ); switch (choice) { case "1": city = await chooseCity(call); betShemesh = city === "בית שמש" ? await chooseBetShemesh(call) : ""; region = await chooseregion(call, betShemesh, city); street = await choosestreet(call, city); Object.assign(paramsToChange, { city, betShemesh, region, street }); break; case "2": number = await choosenumber(call); paramsToChange.number = number; break; case "3": floor = await choosefloor(call); paramsToChange.floor = floor; break; case "4": room = await chooseroom(call); paramsToChange.room = room; break; case "5": price = await chooseprice(call); paramsToChange.price = price; break; case "6": phone = await choosephone(call); paramsToChange.newPhone = phone; break; case "7": phone2 = await choosephone(call); paramsToChange.phone2 = phone2; break; default: return false; } ad = `המודעה היא דירה ל${adBase.buyorrent} ב${city}`; if (city === "בית שמש") ad += `ה${betShemesh}`; ad += ` בשכונה ${region} ברחוב ${street} מספר ${number} קומה ${floor} ${room} חדרים במחיר ${price} טלפון ליצירת קשר ${phone}`; if (phone2) ad += ` טלפון נוסף ${phone2}`; ad = ad.replace(".5", " וחצי").replace("-", "מינוס ").replace(".0",""); console.log(ad); } while (await call.read( [{ type: 'text', data: `${ad} , לעריכת המודעה הקש 1 לפרסום ושמירה 2` }], 'tap', { max_digits: 1, min_digits: 1, typing_playback_mode: "No", digits_allowed: [1, 2] } ) !== "2"); paramsToChange.phone = call.ApiPhone.replace("+972", "0"); paramsToChange.adId = adBase.id; const params = new URLSearchParams(paramsToChange); const url = `https://stamandsefer.co.il/appart/new/updateAd.php?${params}`; console.log("שולח בקשה"); try { const res = await fetch(url, { method: 'GET' }); if (!res.ok) throw new Error(`שגיאת HTTP: ${res.status} ${res.statusText}`); const response = await res.json(); console.log('Response:', response); if (response.status !== "success") { call.id_list_message([{ type: "text", data: "אירעה שגיאה בעת שמירת המודעה" }]); console.error('שגיאת שרת:', response); } return true; } catch (err) { console.error('שגיאה בשליחת הבקשה:', err.message); call.id_list_message([{ type: "text", data: "שגיאה בשליחת המודעה" }]); } } /**********************************************************************/ /** @param {import('yemot-router2').Call} call @param {AdData} adBase @param {string} phone */ async function deleteAd(call, adBase, phone) { const params = new URLSearchParams({ phone, adId: String(adBase.id) }); const url = `https://stamandsefer.co.il/appart/new/deleteAd.php?${params}`; console.log("שולח בקשה"); try { const res = await fetch(url, { method: 'GET' }); if (!res.ok) throw new Error(`שגיאת HTTP: ${res.status} ${res.statusText}`); const response = await res.json(); console.log('Response:', response); if (response.status !== "success") { call.id_list_message([{ type: "text", data: "אירעה שגיאה בעת מחיקת המודעה" }]); console.error('שגיאת שרת:', response); } } catch (err) { console.error('שגיאה בשליחת הבקשה:', err.message); call.id_list_message([{ type: "text", data: "שגיאה בשליחת המודעה" }]); } }
אשמח כאן גם ל @צדיק-תמים (אתה אחראי על הספריה לא?)
-
@עידו300 כתב בבירור | הרצת כמה סקריפטים במקביל:
gpt מתעקש על הדרך שהוא כתב.
תראו https://chatgpt.com/share/68f7352d-e9cc-8000-8072-3de179fe6480אתה צריך לצאת מהראש של סקריפטים בPHP ולעבור לראש של אפליקציה שרצה קבוע, זה לא שהראוטר "מריץ קובץ" JS לפי הנתיב (לא ברור למה נראה לך שזה טוחן מעבד, להיפך PHP הרבה יותר כבד, ואכמ"ל)
ממליץ על https://did.li/zg9Hwיש לך אגב בתחומים הרבה שרשורים דומים של מתכנתים שעברו מPHP לנוד והתקשו להבין את הגישה השונה
-
@עידו300 כתב בבירור | הרצת כמה סקריפטים במקביל:
gpt מתעקש על הדרך שהוא כתב.
תראו https://chatgpt.com/share/68f7352d-e9cc-8000-8072-3de179fe6480אתה צריך לצאת מהראש של סקריפטים בPHP ולעבור לראש של אפליקציה שרצה קבוע, זה לא שהראוטר "מריץ קובץ" JS לפי הנתיב (לא ברור למה נראה לך שזה טוחן מעבד, להיפך PHP הרבה יותר כבד, ואכמ"ל)
ממליץ על https://did.li/zg9Hwיש לך אגב בתחומים הרבה שרשורים דומים של מתכנתים שעברו מPHP לנוד והתקשו להבין את הגישה השונה
@צדיק-תמים כתב בבירור | הרצת כמה סקריפטים במקביל:
(לא ברור למה נראה לך שזה טוחן מעבד, להיפך PHP הרבה יותר כבד, ואכמ"ל)
אני רואה איך המעבד מגיע ל100%...
@צדיק-תמים כתב בבירור | הרצת כמה סקריפטים במקביל:
אתה צריך לצאת מהראש של סקריפטים בPHP ולעבור לראש של אפליקציה שרצה קבוע
אני בעד, במה זה מתבטא? במה זה שונה?
תכלס, איך משנים את זה? מה עושים הלאה?
יש לי עוד שאלה על הספריה המדהימה הזאת (לגבי השמעת call.id_list_message והמשך ביצוע פעולות), אשאל פה או שאפתח שרשור חדש?
-
@צדיק-תמים כתב בבירור | הרצת כמה סקריפטים במקביל:
(לא ברור למה נראה לך שזה טוחן מעבד, להיפך PHP הרבה יותר כבד, ואכמ"ל)
אני רואה איך המעבד מגיע ל100%...
@צדיק-תמים כתב בבירור | הרצת כמה סקריפטים במקביל:
אתה צריך לצאת מהראש של סקריפטים בPHP ולעבור לראש של אפליקציה שרצה קבוע
אני בעד, במה זה מתבטא? במה זה שונה?
תכלס, איך משנים את זה? מה עושים הלאה?
יש לי עוד שאלה על הספריה המדהימה הזאת (לגבי השמעת call.id_list_message והמשך ביצוע פעולות), אשאל פה או שאפתח שרשור חדש?
-
@צדיק-תמים כתב בבירור | הרצת כמה סקריפטים במקביל:
(לא ברור למה נראה לך שזה טוחן מעבד, להיפך PHP הרבה יותר כבד, ואכמ"ל)
אני רואה איך המעבד מגיע ל100%...
@צדיק-תמים כתב בבירור | הרצת כמה סקריפטים במקביל:
אתה צריך לצאת מהראש של סקריפטים בPHP ולעבור לראש של אפליקציה שרצה קבוע
אני בעד, במה זה מתבטא? במה זה שונה?
תכלס, איך משנים את זה? מה עושים הלאה?
יש לי עוד שאלה על הספריה המדהימה הזאת (לגבי השמעת call.id_list_message והמשך ביצוע פעולות), אשאל פה או שאפתח שרשור חדש?
-
@עידו300 קודם כל תראה את הפלייליסט ששלחתי, לפחות את פרקים 1-5
שאלות ספציפיות על הספריה בנושא נפרד כמובן@עידו300 כתב בבירור | הרצת כמה סקריפטים במקביל:
אני רואה איך המעבד מגיע ל100%...
זה לא תקין, מה הקוד שלך עושה?
בעז"ה אבל @צדיק-תמים קריטי לי עכשיו החלק של app.use('/login', login);
שבספריה א"א בגלל שמשתמשים בראוטר אחר.
אשמח לעזרה (אני צריך להראות דוגמא ללקוח ולא יכול בגלל שלא מצליח לחבר את שתיהן ביחד ולא רוצה לפתוח עוד פורט למרות שבמקרה הצורך זה מה שאעשה..) -
@עידו300 כתב בבירור | הרצת כמה סקריפטים במקביל:
אני רואה איך המעבד מגיע ל100%...
איזה מעבד יש לך בשרת? זה נשמע שאתה במבצע חיסכון
@ע-ה-דכו-ע כתב בבירור | הרצת כמה סקריפטים במקביל:
@עידו300 כתב בבירור | הרצת כמה סקריפטים במקביל:
אני רואה איך המעבד מגיע ל100%...
כמה ליבות מעבד יש לך בשרת? זה נשמע שאתה במבצע חיסכון
זה לא ממש משנה כמה ליבות כי נוד משתמש רק באחת...
אבל בהנחה שהוא לא עושה חישובים כבדים זה ממש לא תקין -
@עידו300 כתב בבירור | הרצת כמה סקריפטים במקביל:
אני רואה איך המעבד מגיע ל100%...
איזה מעבד יש לך בשרת? זה נשמע שאתה במבצע חיסכון
@ע-ה-דכו-ע יש לי 2 ליבות ואני רואה עכשיו שזה על 100% למרות שכלום לא בשימוש
-
@ע-ה-דכו-ע כתב בבירור | הרצת כמה סקריפטים במקביל:
@עידו300 כתב בבירור | הרצת כמה סקריפטים במקביל:
אני רואה איך המעבד מגיע ל100%...
כמה ליבות מעבד יש לך בשרת? זה נשמע שאתה במבצע חיסכון
זה לא ממש משנה כמה ליבות כי נוד משתמש רק באחת...
אבל בהנחה שהוא לא עושה חישובים כבדים זה ממש לא תקין@צדיק-תמים כתב בבירור | הרצת כמה סקריפטים במקביל:
אבל בהנחה שהוא לא עושה חישובים כבדים זה ממש לא תקין
לא יודע אם חישובים כבדים אבל עושה דברים.
-
@ע-ה-דכו-ע כתב בבירור | הרצת כמה סקריפטים במקביל:
@עידו300 כתב בבירור | הרצת כמה סקריפטים במקביל:
אני רואה איך המעבד מגיע ל100%...
כמה ליבות מעבד יש לך בשרת? זה נשמע שאתה במבצע חיסכון
זה לא ממש משנה כמה ליבות כי נוד משתמש רק באחת...
אבל בהנחה שהוא לא עושה חישובים כבדים זה ממש לא תקין@צדיק-תמים כתב בבירור | הרצת כמה סקריפטים במקביל:
זה לא ממש משנה כמה ליבות כי נוד משתמש רק באחת...
ובדיוק זו הבעיה...
בכל מקרה פתחתי עוד פורט 1... לא היתה ברירה, אם יש למישהו פתרון, אשמח.
תודה
-
@צדיק-תמים כתב בבירור | הרצת כמה סקריפטים במקביל:
זה לא ממש משנה כמה ליבות כי נוד משתמש רק באחת...
ובדיוק זו הבעיה...
בכל מקרה פתחתי עוד פורט 1... לא היתה ברירה, אם יש למישהו פתרון, אשמח.
תודה
@עידו300 אתה רוצה לפתור את הצורך הנקודתי אבל בלי ללמוד איך זה עובד? זכותך אבל זה לא מתאים לי, אם תלמד איך עובדת האסינכרוניות של נוד ואיך להשתמש באקספרס אשמח לענות על שאלות
@עידו300 כתב בבירור | הרצת כמה סקריפטים במקביל:
ובדיוק זו הבעיה...
זה לא הבעיה
-
@עידו300 אתה רוצה לפתור את הצורך הנקודתי אבל בלי ללמוד איך זה עובד? זכותך אבל זה לא מתאים לי, אם תלמד איך עובדת האסינכרוניות של נוד ואיך להשתמש באקספרס אשמח לענות על שאלות
@עידו300 כתב בבירור | הרצת כמה סקריפטים במקביל:
ובדיוק זו הבעיה...
זה לא הבעיה
@צדיק-תמים חחח, זה יפה שיש לך כאלו עקרונות, גם אני לא אוהב לעשות העתק-הדבק, אבל לפעמים צריך SOS פתרון ואח"כ יהיה זמן ללמוד את הנושא...
בכל מקרה עכשיו יש קשיים אחרים, הPM2 לא מריץ את זה, זאת אומרת כתוב אונליין אבל תכלס שניגשים לכתובת "וְאֵין קוֹל וְאֵין עֹנֶה וְאֵין קָשֶׁב".
כשמריצים כרגיל עם node *.js הכל טוב, אבל עם הPM2 לא... וגם כשמוסיפים & זה לא גורם לו להשאר אחרי שהטרמינל נסגר.אני כבר משתגע מזה, בושות מהלקוח, טוב שהוא עוד לא התקשר לקו לבדוק.