דילוג לתוכן
  • דף הבית
  • קטגוריות
  • פוסטים אחרונים
  • משתמשים
  • חיפוש
  • חוקי הפורום
כיווץ
תחומים

תחומים - פורום חרדי מקצועי

💡 רוצה לזכור קריאת שמע בזמן? לחץ כאן!
  1. דף הבית
  2. תכנות
  3. בירור | בדיקה האם קוד מסויים עובד ברקע

בירור | בדיקה האם קוד מסויים עובד ברקע

מתוזמן נעוץ נעול הועבר תכנות
11 פוסטים 4 כותבים 520 צפיות
  • מהישן לחדש
  • מהחדש לישן
  • הכי הרבה הצבעות
התחברו כדי לפרסם תגובה
נושא זה נמחק. רק משתמשים עם הרשאות מתאימות יוכלו לצפות בו.
  • ש מנותק
    ש מנותק
    ששא
    כתב ב נערך לאחרונה על ידי
    #1

    יש לי קוד PHP שכותב לקובץ בימות המשיח ע"י לקיחת הטקסט הקיים בקובץ, עיבוד והעלאה מחדש
    הבעיה היא שאם יקרה שהקוד יופעל פעמיים באותו שניה אז אחד משניהם לא ייקלט, כי שניהם לקחו טקסט אחד וכל אחד עיבד את מה שהוא רצה לעבד ומחזיר את מה שיצא אחרי העיבוד שלו כך שמה שיהיה בסופו של דבר בקובץ הוא מה שהקוד השני עיבד אבל התיקון של הקוד הראשון נשמט
    השאלה האם אפשר לעשות איזשהוא בדיקה האם הקוד עובד כבר עוד פעם, ואם כן שיחכה עד שיסיים לעבוד ואז הוא יתחיל?
    מקווה שהובנתי...

    אבייא Y 2 תגובות תגובה אחרונה
    0
    • אבייא מנותק
      אבייא מנותק
      אביי
      השיב לששא ב נערך לאחרונה על ידי
      #2

      @ששא תוכל לבדוק האם קובץ מסויים קיים במערכת, וכל פעם בתחילת פעולת הקוד, תיצור אותו, ובסיום תמחק אותו...

      ניתן ליצור עימי קשר 8140hp+t@gmail.com | קטלוג מוצרים
      הלינקיה שלי https://abaye.co/link.html

      תגובה 1 תגובה אחרונה
      2
      • yossizY מנותק
        yossizY מנותק
        yossiz
        כתב ב נערך לאחרונה על ידי
        #3

        @אביי פה מציעים לנעול קובץ קיים במקום ליצור ולמחוק,
        יש לזה יתרון שגם אם הסקריפט יקרוס הנעילה תתבטל. לפי הצעה שלך אם הסקריפט יקרוס בלי למחוק את הקובץ כל הבאים אחריו לא ירוצו

        📧 יוסי@מייל.קום | 🌎 בלוג | ☕ קפה

        ש תגובה 1 תגובה אחרונה
        4
        • ש מנותק
          ש מנותק
          ששא
          השיב לyossiz ב נערך לאחרונה על ידי
          #4

          @yossiz זה ממש רעיון טוב ואני גם הוספתי לולאת while שמחכה 5 שניות בין ריצה לריצה עד שהקובץ ייפתח
          שאלתי את GPT מה עושים אם יש כמה תהליכים שמחכים - יכול להיות שבסוף כולם ידחפו לפני מי שהיה הראשון
          אז הוא הביא לי את זה

          $fp = fopen('/tmp/php-commit.lock', 'r+');
          $max_attempts = 10; // מספר מקסימלי של ניסיונות
          $attempts = 0;
          
          while (!flock($fp, LOCK_EX | LOCK_NB)) {
              if (++$attempts >= $max_attempts) {
                  error_log("Could not acquire lock after $max_attempts attempts.");
                  fclose($fp);
                  exit("Could not acquire lock after $max_attempts attempts.");
              }
              // המתן זמן אקראי בין 5 ל-15 שניות ונסה שוב
              $wait_time = rand(5, 15);
              error_log("Attempt $attempts failed. Waiting $wait_time seconds before retrying.");
              sleep($wait_time);
          }
          
          // ... do stuff
          
          fclose($fp);
          error_log("Lock acquired and file processed.");
          

          אבל אני עדיין חושב שזה לא מספיק כי אם הקוד לוקח שני שניות, אז יכול להיות שבשני שניות הללו יהיו שלוש קריאות והשלישי בסוף יידחף לפני הראשון ובסוף יווצר מצב שפקודה שנשלחה לפני דקה עוד לא בוצעה למעשה...
          יש מה לעשות לזה?

          yossizY תגובה 1 תגובה אחרונה
          0
          • yossizY מנותק
            yossizY מנותק
            yossiz
            השיב לששא ב נערך לאחרונה על ידי
            #5

            @ששא כתב בבירור | בדיקה האם קוד מסויים עובד ברקע:

            מה עושים אם יש כמה תהליכים שמחכים - יכול להיות שבסוף כולם ידחפו לפני מי שהיה הראשון

            לא הבנתי את השאלה שלך.
            ממה נפשך, אם הסדר בין הפעולות חשוב, אז בכל מקרה אתה בבעיה כי בתעבורת רשת אי אפשר לסמוך שהבקשה שנשלחה ראשונה הגיעה ראשונה
            ואם הסדר לא משנה, לא הבנתי מה הבעיה בכלל

            📧 יוסי@מייל.קום | 🌎 בלוג | ☕ קפה

            ש תגובה 1 תגובה אחרונה
            0
            • yossizY מנותק
              yossizY מנותק
              yossiz
              כתב ב נערך לאחרונה על ידי yossiz
              #6

              אגב, זה טעות להשתמש במקרה שלך בדגל LOCK_NB
              הדגל הזה מיועד למי שרוצה שהפונקציה תיכשל אם הקובץ נעול.
              אתה רוצה שהפונקציה תחכה עד שהנעילה ישתחרר.
              זה מייתר לגמרי את הלולאה וקריאות ל-sleep

              בכללי: צאטGPT הוא לא במקום קריאת הקוד והבנתו לעומק...

              📧 יוסי@מייל.קום | 🌎 בלוג | ☕ קפה

              תגובה 1 תגובה אחרונה
              4
              • ש מנותק
                ש מנותק
                ששא
                השיב לyossiz ב נערך לאחרונה על ידי ששא
                #7

                @yossiz כתב בבירור | בדיקה האם קוד מסויים עובד ברקע:

                ממה נפשך, אם הסדר בין הפעולות חשוב, אז בכל מקרה אתה בבעיה כי בתעבורת רשת אי אפשר לסמוך שהבקשה שנשלחה ראשונה הגיעה ראשונה

                זה חשוב לי
                אבל אתה אומר שממילא אין מה לעשות, אז אין מה לעשות...

                @yossiz כתב בבירור | בדיקה האם קוד מסויים עובד ברקע:

                אגב, זה טעות להשתמש במקרה שלך בדגל LOCK_NB
                הדגל הזה מיועד למי שרוצה שהפונקציה תיכשל אם הקובץ נעול.

                זה מה שנתנו בדוגמא שהבאת, אבל במחשבה שניה זה נעשה לתקוע את הקוד ואני הרי רוצה לחכות אז אכן עדיף להוריד את זה ואז לא צריך בית חולים ליד הגשר...

                תודה על הסבת תשומת הלב

                yossizY תגובה 1 תגובה אחרונה
                1
                • yossizY מנותק
                  yossizY מנותק
                  yossiz
                  השיב לששא ב נערך לאחרונה על ידי yossiz
                  #8

                  @ששא כתב בבירור | בדיקה האם קוד מסויים עובד ברקע:

                  אבל אתה אומר שממילא אין מה לעשות, אז אין מה לעשות...

                  אם יש כמה שניות בין שליחה לשליחה, רוב הסיכויים שהם יגיעו לפי הסדר, אני רק סבור שאם זה חשוב מאוד, אז כדאי לוודא בצורה יותר בטוחה שהם יטופלו לפי הסדר

                  (אם נניח שאתה בטוח שהבקשות הגיעו לפי הסדר), לגבי שאלת שחרור הנעילה של הקובץ לפי הסדר, עיין כאן דברים מחכימים

                  📧 יוסי@מייל.קום | 🌎 בלוג | ☕ קפה

                  תגובה 1 תגובה אחרונה
                  1
                  • Y מנותק
                    Y מנותק
                    yosef770
                    השיב לששא ב נערך לאחרונה על ידי
                    #9

                    @ששא לא פירטת איזה סוג עיבוד אתה עושה לטקסט אבל אם כל מה שאתה עושה זה להוסיף תוכן או לשנות תוכן של key value תוכל להשתמש בקריאה לעדכון קובץ ext.ini בשלוחה X ובגמר הפעולה לשכפל אותו לשלוחת Y עם שם הקובץ הרלוונטי. כך בעצם יוצא שאתה רק דוחף עדכון לקובץ ולא מעלה אותו כל פעם מחדש.

                    ש תגובה 1 תגובה אחרונה
                    0
                    • ש מנותק
                      ש מנותק
                      ששא
                      השיב לyosef770 ב נערך לאחרונה על ידי
                      #10

                      @yosef770 אבל אם יש קוד נוסף שעובד ברקע אז יהיו כפילויות או התנגשויות בהעתקה וכן בהעתקה חוזרת, לא?

                      Y תגובה 1 תגובה אחרונה
                      0
                      • Y מנותק
                        Y מנותק
                        yosef770
                        השיב לששא ב נערך לאחרונה על ידי
                        #11

                        @ששא לא, כי כל פעם אתה משכפל את הקובץ הכי עדכני שמחליף את הקובץ הקודם בשלוחת היעד.

                        תגובה 1 תגובה אחרונה
                        0

                        בא תתחבר לדף היומי!
                        • התחברות

                        • אין לך חשבון עדיין? הרשמה

                        • התחברו או הירשמו כדי לחפש.
                        • פוסט ראשון
                          פוסט אחרון
                        0
                        • דף הבית
                        • קטגוריות
                        • פוסטים אחרונים
                        • משתמשים
                        • חיפוש
                        • חוקי הפורום